/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/nested_pairs_to_triple.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/conv2d/selector_list.h"
#include "test/conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Selectors = sycldnn::types::SelectorList;
using Backends = sycldnn::types::AllBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<Selectors, DataTypeList>::type;
using BackendTypePairs =
    sycldnn::types::CartesianProduct<SNNTypePairs, Backends>::type;
using TestTriples = sycldnn::types::NestedPairsToTriple<BackendTypePairs>::type;

using GTestTypeTriples = sycldnn::types::ToGTestTypes<TestTriples>::type;

template <typename Pair>
using InputBackpropWindow3Stride2 = WindowStrideTest<Pair, 3, 2>;
TYPED_TEST_SUITE(InputBackpropWindow3Stride2, GTestTypeTriples);
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  14., 10., 24.,  15., 16.,  40., 26., 60., 36., 20., 44., 25.,
      54., 30., 46., 100., 56., 120., 66., 35., 74., 40., 84., 45.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  4.,  5.,  14., 10., 12., 10., 14., 36.,
      24., 30., 12., 15., 34., 20., 24., 21., 24., 55., 32., 36.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,  88.,  67.,  164., 105., 100., 260., 176., 412.,
      252., 143., 316., 181., 392., 219., 328., 716., 404.,
      868., 480., 257., 544., 295., 620., 333.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  23.,  29., 88.,  67.,
      81.,  58.,  86.,  232., 162., 206., 83., 105., 240.,
      143., 173., 149., 171., 396., 233., 263.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,  612.,  486.,  1204., 782.,  692.,  1848., 1284., 3032.,
      1876., 1078., 2388., 1374., 2980., 1670., 2468., 5400., 3060.,
      6584., 3652., 1966., 4164., 2262., 4756., 2558.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  150.,  190., 612., 486.,
      590.,  380.,  588.,  1640., 1180., 1516., 614., 782., 1796.,
      1078., 1310., 1118., 1286., 2996., 1774., 2006.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9.,  10., 25.,  28.,  18., 20.,  43.,  48.,  27.,  30.,
      27., 32., 68.,  80.,  45., 52.,  104., 120., 63.,  72.,
      36., 40., 79.,  88.,  45., 50.,  97.,  108., 54.,  60.,
      81., 92., 176., 200., 99., 112., 212., 240., 117., 132.,
      63., 70., 133., 148., 72., 80.,  151., 168., 81.,  90.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  7.,  10.,  6.,   8.,  10., 12., 7.,  8.,  9.,
      10., 25., 28., 18., 20., 22.,  24.,  16., 20., 24., 28., 62., 72.,
      42., 48., 54., 60., 21., 24.,  27.,  30., 61., 68., 36., 40., 44.,
      48., 39., 42., 45., 48., 103., 110., 60., 64., 68., 72.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53.,  59.,  160.,  180.,  123., 137., 300.,  336.,  193., 215.,
      172., 208., 452.,  540.,  312., 364., 732.,  852.,  452., 520.,
      263., 293., 580.,  648.,  333., 371., 720.,  804.,  403., 449.,
      592., 676., 1292., 1476., 732., 832., 1572., 1788., 872., 988.,
      473., 527., 1000., 1116., 543., 605., 1140., 1272., 613., 683.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  40.,  60.,  39.,  53.,  67.,  81.,
      41.,  47.,  53.,  59.,  160., 180., 123., 137., 151., 165.,
      94.,  122., 150., 178., 408., 480., 290., 334., 378., 422.,
      149., 171., 193., 215., 440., 492., 263., 293., 323., 353.,
      281., 303., 325., 347., 752., 804., 443., 473., 503., 533.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      350.,  390.,  1124., 1268.,  902.,  1006., 2228.,  2500.,  1454., 1622.,
      1204., 1476., 3256., 3928.,  2308., 2708., 5464.,  6392.,  3412., 3940.,
      2006., 2238., 4436., 4964.,  2558., 2854., 5540.,  6196.,  3110., 3470.,
      4516., 5172., 9880., 11320., 5620., 6404., 12088., 13784., 6724., 7636.,
      3662., 4086., 7748., 8660.,  4214., 4702., 8852.,  9892.,  4766., 5318.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  260.,  404.,  278.,  382.,  486.,  590.,
      270.,  310.,  350.,  390.,  1124., 1268., 902.,  1006., 1110., 1214.,
      620.,  828.,  1036., 1244., 2920., 3464., 2140., 2476., 2812., 3148.,
      1118., 1286., 1454., 1622., 3332., 3732., 2006., 2238., 2470., 2702.,
      2126., 2294., 2462., 2630., 5732., 6132., 3398., 3630., 3862., 4094.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,  49.,  54.,  59.,  64.,
      124., 136., 148., 160., 83.,  90.,  97.,  104., 192., 208., 224., 240.,
      117., 126., 135., 144., 68.,  72.,  76.,  80.,  149., 158., 167., 176.,
      85.,  90.,  95.,  100., 183., 194., 205., 216., 102., 108., 114., 120.,
      151., 162., 173., 184., 328., 352., 376., 400., 185., 198., 211., 224.,
      396., 424., 452., 480., 219., 234., 249., 264., 119., 126., 133., 140.,
      251., 266., 281., 296., 136., 144., 152., 160., 285., 302., 319., 336.,
      153., 162., 171., 180.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      42.,  44.,  46.,  48.,  28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,
      114., 124., 134., 144., 78.,  84.,  90.,  96.,  102., 108., 114., 120.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  75.,  78.,  81.,  84.,
      87.,  90.,  93.,  96.,  199., 206., 213., 220., 116., 120., 124., 128.,
      132., 136., 140., 144.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      101.,  107.,  113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,
      263.,  277.,  572.,  608.,  644.,  680.,  369.,  391.,  413.,  435.,
      316.,  352.,  388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,
      688.,  740.,  1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056.,
      503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312., 637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      1120., 1204., 1288., 1372., 2444., 2628., 2812., 2996., 1388., 1488.,
      1588., 1688., 2980., 3196., 3412., 3628., 1656., 1772., 1888., 2004.,
      905.,  959.,  1013., 1067., 1912., 2028., 2144., 2260., 1039., 1101.,
      1163., 1225., 2180., 2312., 2444., 2576., 1173., 1243., 1313., 1383.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,  23.,  29.,  35.,  41.,  47.,   64.,   84.,
      104.,  124.,  67.,  81.,  95.,  109., 123., 137.,  151.,  165.,
      77.,   83.,   89.,  95.,  101., 107., 113., 119.,  304.,  324.,
      344.,  364.,  235., 249., 263., 277., 291., 305.,  319.,  333.,
      166.,  194.,  222., 250., 278., 306., 334., 362.,  760.,  832.,
      904.,  976.,  546., 590., 634., 678., 722., 766.,  810.,  854.,
      281.,  303.,  325., 347., 369., 391., 413., 435.,  840.,  892.,
      944.,  996.,  503., 533., 563., 593., 623., 653.,  683.,  713.,
      545.,  567.,  589., 611., 633., 655., 677., 699.,  1464., 1516.,
      1568., 1620., 863., 893., 923., 953., 983., 1013., 1043., 1073.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,  1734.,
      1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,  2966.,
      3134.,  3302.,  2228.,  2500.,  2772.,  3044.,  6072.,  6744.,  7416.,
      8088.,  4356.,  4756.,  5156.,  5556.,  10328., 11256., 12184., 13112.,
      6484.,  7012.,  7540.,  8068.,  3862.,  4094.,  4326.,  4558.,  8532.,
      9060.,  9588.,  10116., 4926.,  5222.,  5518.,  5814.,  10660., 11316.,
      11972., 12628., 5990.,  6350.,  6710.,  7070.,  8612.,  9268.,  9924.,
      10580., 18840., 20280., 21720., 23160., 10740., 11524., 12308., 13092.,
      23096., 24792., 26488., 28184., 12868., 13780., 14692., 15604., 7054.,
      7478.,  7902.,  8326.,  14916., 15828., 16740., 17652., 8118.,  8606.,
      9094.,  9582.,  17044., 18084., 19124., 20164., 9182.,  9734.,  10286.,
      10838.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,  150.,  190.,  230.,  270.,  310.,  420.,   564.,
      708.,   852.,   486.,  590.,  694.,  798.,  902.,  1006., 1110.,  1214.,
      510.,   550.,   590.,  630.,  670.,  710.,  750.,  790.,  2148.,  2292.,
      2436.,  2580.,  1734., 1838., 1942., 2046., 2150., 2254., 2358.,  2462.,
      1100.,  1308.,  1516., 1724., 1932., 2140., 2348., 2556., 5480.,  6024.,
      6568.,  7112.,  4060., 4396., 4732., 5068., 5404., 5740., 6076.,  6412.,
      2126.,  2294.,  2462., 2630., 2798., 2966., 3134., 3302., 6404.,  6804.,
      7204.,  7604.,  3862., 4094., 4326., 4558., 4790., 5022., 5254.,  5486.,
      4142.,  4310.,  4478., 4646., 4814., 4982., 5150., 5318., 11204., 11604.,
      12004., 12404., 6646., 6878., 7110., 7342., 7574., 7806., 8038.,  8270.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4.,   5.,  14.,  10., 24., 15., 11., 16., 40., 26.,
      60.,  36., 16.,  20., 44., 25., 54., 30., 35., 46.,
      100., 56., 120., 66., 28., 35., 74., 40., 84., 45.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5., 4.,  6.,  0.,  4.,  5.,  14., 10., 12., 0.,  10., 14., 36.,
      24., 30., 0., 12., 15., 34., 20., 24., 0.,  21., 24., 55., 32., 36., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23.,  29.,  88.,  67.,  164., 105., 64.,  100., 260., 176.,
      412., 252., 113., 143., 316., 181., 392., 219., 244., 328.,
      716., 404., 868., 480., 203., 257., 544., 295., 620., 333.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25., 39.,  0.,   23.,  29.,  88.,  67.,
      81.,  0.,   58.,  86., 232., 162., 206., 0.,   83.,  105.,
      240., 143., 173., 0.,  149., 171., 396., 233., 263., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150.,  190.,  612.,  486.,  1204., 782.,  420.,  692.,  1848., 1284.,
      3032., 1876., 846.,  1078., 2388., 1374., 2980., 1670., 1812., 2468.,
      5400., 3060., 6584., 3652., 1542., 1966., 4164., 2262., 4756., 2558.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174., 278.,  0.,    150.,  190.,  612.,  486.,
      590.,  0.,    380.,  588., 1640., 1180., 1516., 0.,    614.,  782.,
      1796., 1078., 1310., 0.,   1118., 1286., 2996., 1774., 2006., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7.,  8.,  9.,  10., 25.,  28.,  18., 20.,  43.,  48.,  27.,  30.,
      17., 22., 27., 32., 68.,  80.,  45., 52.,  104., 120., 63.,  72.,
      28., 32., 36., 40., 79.,  88.,  45., 50.,  97.,  108., 54.,  60.,
      59., 70., 81., 92., 176., 200., 99., 112., 212., 240., 117., 132.,
      49., 56., 63., 70., 133., 148., 72., 80.,  151., 168., 81.,  90.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  7.,   10.,  6.,  8.,  10., 12., 0., 0.,
      7.,  8.,  9.,  10., 25.,  28.,  18., 20., 22., 24., 0., 0.,
      16., 20., 24., 28., 62.,  72.,  42., 48., 54., 60., 0., 0.,
      21., 24., 27., 30., 61.,  68.,  36., 40., 44., 48., 0., 0.,
      39., 42., 45., 48., 103., 110., 60., 64., 68., 72., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,  300., 336.,
      193.,  215.,  100.,  136.,  172.,  208.,  452.,  540.,  312., 364.,
      732.,  852.,  452.,  520.,  203.,  233.,  263.,  293.,  580., 648.,
      333.,  371.,  720.,  804.,  403.,  449.,  424.,  508.,  592., 676.,
      1292., 1476., 732.,  832.,  1572., 1788., 872.,  988.,  365., 419.,
      473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272., 613., 683.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  40.,  60.,  39.,  53.,  67.,  81.,  0., 0.,
      41.,  47.,  53.,  59.,  160., 180., 123., 137., 151., 165., 0., 0.,
      94.,  122., 150., 178., 408., 480., 290., 334., 378., 422., 0., 0.,
      149., 171., 193., 215., 440., 492., 263., 293., 323., 353., 0., 0.,
      281., 303., 325., 347., 752., 804., 443., 473., 503., 533., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      270.,  310.,   350.,  390.,  1124.,  1268.,  902.,  1006., 2228., 2500.,
      1454., 1622.,  660.,  932.,  1204.,  1476.,  3256., 3928., 2308., 2708.,
      5464., 6392.,  3412., 3940., 1542.,  1774.,  2006., 2238., 4436., 4964.,
      2558., 2854.,  5540., 6196., 3110.,  3470.,  3204., 3860., 4516., 5172.,
      9880., 11320., 5620., 6404., 12088., 13784., 6724., 7636., 2814., 3238.,
      3662., 4086.,  7748., 8660., 4214.,  4702.,  8852., 9892., 4766., 5318.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  260.,  404.,  278.,  382.,  486.,  590.,
      0.,    0.,    270.,  310.,  350.,  390.,  1124., 1268., 902.,  1006.,
      1110., 1214., 0.,    0.,    620.,  828.,  1036., 1244., 2920., 3464.,
      2140., 2476., 2812., 3148., 0.,    0.,    1118., 1286., 1454., 1622.,
      3332., 3732., 2006., 2238., 2470., 2702., 0.,    0.,    2126., 2294.,
      2462., 2630., 5732., 6132., 3398., 3630., 3862., 4094., 0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,
      29.,  34.,  39.,  44.,  49.,  54.,  59.,  64.,  124., 136., 148., 160.,
      83.,  90.,  97.,  104., 192., 208., 224., 240., 117., 126., 135., 144.,
      52.,  56.,  60.,  64.,  68.,  72.,  76.,  80.,  149., 158., 167., 176.,
      85.,  90.,  95.,  100., 183., 194., 205., 216., 102., 108., 114., 120.,
      107., 118., 129., 140., 151., 162., 173., 184., 328., 352., 376., 400.,
      185., 198., 211., 224., 396., 424., 452., 480., 219., 234., 249., 264.,
      91.,  98.,  105., 112., 119., 126., 133., 140., 251., 266., 281., 296.,
      136., 144., 152., 160., 285., 302., 319., 336., 153., 162., 171., 180.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  0.,   0.,   0.,   0.,
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  42.,  44.,  46.,  48.,  0.,   0.,   0.,   0.,
      28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,  114., 124., 134., 144.,
      78.,  84.,  90.,  96.,  102., 108., 114., 120., 0.,   0.,   0.,   0.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  0.,   0.,   0.,   0.,
      75.,  78.,  81.,  84.,  87.,  90.,  93.,  96.,  199., 206., 213., 220.,
      116., 120., 124., 128., 132., 136., 140., 144., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,  304.,  324.,
      344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,  644.,  680.,
      369.,  391.,  413.,  435.,  172.,  208.,  244.,  280.,  316.,  352.,
      388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,  688.,  740.,
      1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056., 383.,  413.,
      443.,  473.,  503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312.,
      637.,  675.,  713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,
      863.,  909.,  784.,  868.,  952.,  1036., 1120., 1204., 1288., 1372.,
      2444., 2628., 2812., 2996., 1388., 1488., 1588., 1688., 2980., 3196.,
      3412., 3628., 1656., 1772., 1888., 2004., 689.,  743.,  797.,  851.,
      905.,  959.,  1013., 1067., 1912., 2028., 2144., 2260., 1039., 1101.,
      1163., 1225., 2180., 2312., 2444., 2576., 1173., 1243., 1313., 1383.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,   29.,   35.,   41.,   47.,   64.,   84.,  104.,
      124., 67.,  81.,  95.,   109.,  123.,  137.,  151.,  165.,  0.,   0.,
      0.,   0.,   77.,  83.,   89.,   95.,   101.,  107.,  113.,  119., 304.,
      324., 344., 364., 235.,  249.,  263.,  277.,  291.,  305.,  319., 333.,
      0.,   0.,   0.,   0.,    166.,  194.,  222.,  250.,  278.,  306., 334.,
      362., 760., 832., 904.,  976.,  546.,  590.,  634.,  678.,  722., 766.,
      810., 854., 0.,   0.,    0.,    0.,    281.,  303.,  325.,  347., 369.,
      391., 413., 435., 840.,  892.,  944.,  996.,  503.,  533.,  563., 593.,
      623., 653., 683., 713.,  0.,    0.,    0.,    0.,    545.,  567., 589.,
      611., 633., 655., 677.,  699.,  1464., 1516., 1568., 1620., 863., 893.,
      923., 953., 983., 1013., 1043., 1073., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      510.,   550.,   590.,   630.,   670.,   710.,   750.,   790.,   2148.,
      2292.,  2436.,  2580.,  1734.,  1838.,  1942.,  2046.,  4276.,  4548.,
      4820.,  5092.,  2798.,  2966.,  3134.,  3302.,  1140.,  1412.,  1684.,
      1956.,  2228.,  2500.,  2772.,  3044.,  6072.,  6744.,  7416.,  8088.,
      4356.,  4756.,  5156.,  5556.,  10328., 11256., 12184., 13112., 6484.,
      7012.,  7540.,  8068.,  2934.,  3166.,  3398.,  3630.,  3862.,  4094.,
      4326.,  4558.,  8532.,  9060.,  9588.,  10116., 4926.,  5222.,  5518.,
      5814.,  10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,  7070.,
      5988.,  6644.,  7300.,  7956.,  8612.,  9268.,  9924.,  10580., 18840.,
      20280., 21720., 23160., 10740., 11524., 12308., 13092., 23096., 24792.,
      26488., 28184., 12868., 13780., 14692., 15604., 5358.,  5782.,  6206.,
      6630.,  7054.,  7478.,  7902.,  8326.,  14916., 15828., 16740., 17652.,
      8118.,  8606.,  9094.,  9582.,  17044., 18084., 19124., 20164., 9182.,
      9734.,  10286., 10838.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  190.,   230.,   270.,   310.,   420.,  564.,
      708.,  852.,  486.,  590.,  694.,   798.,   902.,   1006.,  1110., 1214.,
      0.,    0.,    0.,    0.,    510.,   550.,   590.,   630.,   670.,  710.,
      750.,  790.,  2148., 2292., 2436.,  2580.,  1734.,  1838.,  1942., 2046.,
      2150., 2254., 2358., 2462., 0.,     0.,     0.,     0.,     1100., 1308.,
      1516., 1724., 1932., 2140., 2348.,  2556.,  5480.,  6024.,  6568., 7112.,
      4060., 4396., 4732., 5068., 5404.,  5740.,  6076.,  6412.,  0.,    0.,
      0.,    0.,    2126., 2294., 2462.,  2630.,  2798.,  2966.,  3134., 3302.,
      6404., 6804., 7204., 7604., 3862.,  4094.,  4326.,  4558.,  4790., 5022.,
      5254., 5486., 0.,    0.,    0.,     0.,     4142.,  4310.,  4478., 4646.,
      4814., 4982., 5150., 5318., 11204., 11604., 12004., 12404., 6646., 6878.,
      7110., 7342., 7574., 7806., 8038.,  8270.,  0.,     0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4.,   5.,  14.,  10., 24., 15., 34., 20., 12.,  18., 44.,  28., 64.,  38.,
      84.,  48., 20.,  25., 54., 30., 64., 35., 74.,  40., 44.,  58., 124., 68.,
      144., 78., 164., 88., 36., 45., 94., 50., 104., 55., 114., 60.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  9.,  6.,  9.,  0.,  4.,  5.,  14., 10., 24., 15.,
      18., 0.,  11., 16., 40., 26., 60., 36., 45., 0.,  16., 20., 44., 25.,
      54., 30., 36., 0.,  28., 32., 71., 40., 87., 48., 54., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23.,   29.,  88.,  67.,  164., 105., 240., 143., 70.,   114.,
      288.,  190., 440., 266., 592., 342., 143., 181., 392.,  219.,
      468.,  257., 544., 295., 310., 418., 896., 494., 1048., 570.,
      1200., 646., 263., 333., 696., 371., 772., 409., 848.,  447.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  56.,  39.,  61.,  0.,   23.,  29.,
      88.,  67.,  164., 105., 127., 0.,   64.,  100., 260., 176.,
      412., 252., 320., 0.,   113., 143., 316., 181., 392., 219.,
      265., 0.,   203., 233., 520., 295., 644., 357., 403., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150.,  190.,  612.,  486.,  1204., 782.,  1796., 1078., 460.,  796.,
      2056., 1388., 3240., 1980., 4424., 2572., 1078., 1374., 2980., 1670.,
      3572., 1966., 4164., 2262., 2316., 3164., 6792., 3756., 7976., 4348.,
      9160., 4940., 2006., 2558., 5348., 2854., 5940., 3150., 6532., 3446.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  446.,  0.,    150.,  190.,
      612.,  486.,  1204., 782.,  950.,  0.,    420.,  692.,  1848., 1284.,
      3032., 1876., 2404., 0.,    846.,  1078., 2388., 1374., 2980., 1670.,
      2030., 0.,    1542., 1774., 3972., 2262., 4948., 2750., 3110., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,  43.,  48.,  27.,  30.,
      61.,  68.,  36.,  40.,  18.,  24.,  30.,  36.,  74.,  88.,  48.,  56.,
      110., 128., 66.,  76.,  146., 168., 84.,  96.,  35.,  40.,  45.,  50.,
      97.,  108., 54.,  60.,  115., 128., 63.,  70.,  133., 148., 72.,  80.,
      74.,  88.,  102., 116., 218., 248., 120., 136., 254., 288., 138., 156.,
      290., 328., 156., 176., 63.,  72.,  81.,  90.,  169., 188., 90.,  100.,
      187., 208., 99.,  110., 205., 228., 108., 120.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,  4.,  7.,   10.,  6.,  8.,  13.,  18.,  9.,  12.,
      15.,  18.,  0.,  0.,  7.,   8.,   9.,  10., 25.,  28.,  18., 20.,
      43.,  48.,  27., 30., 33.,  36.,  0.,  0.,  17.,  22.,  27., 32.,
      68.,  80.,  45., 52., 104., 120., 63., 72., 81.,  90.,  0.,  0.,
      28.,  32.,  36., 40., 79.,  88.,  45., 50., 97.,  108., 54., 60.,
      66.,  72.,  0.,  0.,  52.,  56.,  60., 64., 133., 142., 75., 80.,
      163., 174., 90., 96., 102., 108., 0.,  0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,  300.,  336.,
      193.,  215.,  440.,  492.,  263.,  293.,  106.,  150.,  194.,  238.,
      496.,  600.,  334.,  394.,  776.,  912.,  474.,  550.,  1056., 1224.,
      614.,  706.,  257.,  295.,  333.,  371.,  720.,  804.,  403.,  449.,
      860.,  960.,  473.,  527.,  1000., 1116., 543.,  605.,  538.,  646.,
      754.,  862.,  1616., 1848., 894.,  1018., 1896., 2160., 1034., 1174.,
      2176., 2472., 1174., 1330., 473.,  543.,  613.,  683.,  1280., 1428.,
      683.,  761.,  1420., 1584., 753.,  839.,  1560., 1740., 823.,  917.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,  23.,  40.,  60.,  39.,  53.,  84.,  120.,  61.,  83.,
      105.,  127.,  0.,   0.,   41.,  47.,  53.,  59.,  160., 180.,  123., 137.,
      300.,  336.,  193., 215., 237., 259., 0.,   0.,   100., 136.,  172., 208.,
      452.,  540.,  312., 364., 732., 852., 452., 520., 588., 656.,  0.,   0.,
      203.,  233.,  263., 293., 580., 648., 333., 371., 720., 804.,  403., 449.,
      495.,  541.,  0.,   0.,   383., 413., 443., 473., 988., 1056., 561., 599.,
      1224., 1308., 679., 725., 771., 817., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      270.,   310.,   350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,
      2500.,  1454.,  1622.,  3332.,  3732.,  2006.,  2238.,  700.,   1036.,
      1372.,  1708.,  3592.,  4392.,  2476.,  2940.,  5800.,  6856.,  3580.,
      4172.,  8008.,  9320.,  4684.,  5404.,  1966.,  2262.,  2558.,  2854.,
      5540.,  6196.,  3110.,  3470.,  6644.,  7428.,  3662.,  4086.,  7748.,
      8660.,  4214.,  4702.,  4092.,  4940.,  5788.,  6636.,  12424., 14248.,
      6892.,  7868.,  14632., 16712., 7996.,  9100.,  16840., 19176., 9100.,
      10332., 3662.,  4214.,  4766.,  5318.,  9956.,  11124., 5318.,  5934.,
      11060., 12356., 5870.,  6550.,  12164., 13588., 6422.,  7166.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,   260.,  404.,  278.,  382.,  596.,  868.,
      446.,  614.,  782.,  950.,   0.,    0.,    270.,  310.,  350.,  390.,
      1124., 1268., 902.,  1006.,  2228., 2500., 1454., 1622., 1790., 1958.,
      0.,    0.,    660.,  932.,   1204., 1476., 3256., 3928., 2308., 2708.,
      5464., 6392., 3412., 3940.,  4468., 4996., 0.,    0.,    1542., 1774.,
      2006., 2238., 4436., 4964.,  2558., 2854., 5540., 6196., 3110., 3470.,
      3830., 4190., 0.,    0.,     2934., 3166., 3398., 3630., 7604., 8132.,
      4334., 4630., 9476., 10132., 5270., 5630., 5990., 6350., 0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,
      115., 122., 129., 136., 68.,  72.,  76.,  80.,  30.,  36.,  42.,  48.,
      54.,  60.,  66.,  72.,  134., 148., 162., 176., 88.,  96.,  104., 112.,
      202., 220., 238., 256., 122., 132., 142., 152., 270., 292., 314., 336.,
      156., 168., 180., 192., 65.,  70.,  75.,  80.,  85.,  90.,  95.,  100.,
      183., 194., 205., 216., 102., 108., 114., 120., 217., 230., 243., 256.,
      119., 126., 133., 140., 251., 266., 281., 296., 136., 144., 152., 160.,
      134., 148., 162., 176., 190., 204., 218., 232., 406., 436., 466., 496.,
      224., 240., 256., 272., 474., 508., 542., 576., 258., 276., 294., 312.,
      542., 580., 618., 656., 292., 312., 332., 352., 117., 126., 135., 144.,
      153., 162., 171., 180., 319., 338., 357., 376., 170., 180., 190., 200.,
      353., 374., 395., 416., 187., 198., 209., 220., 387., 410., 433., 456.,
      204., 216., 228., 240.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,
      27.,  30.,  33.,  36.,  0.,   0.,   0.,   0.,   13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,  63.,  66.,  69.,  72.,
      0.,   0.,   0.,   0.,   29.,  34.,  39.,  44.,  49.,  54.,  59.,  64.,
      124., 136., 148., 160., 83.,  90.,  97.,  104., 192., 208., 224., 240.,
      117., 126., 135., 144., 153., 162., 171., 180., 0.,   0.,   0.,   0.,
      52.,  56.,  60.,  64.,  68.,  72.,  76.,  80.,  149., 158., 167., 176.,
      85.,  90.,  95.,  100., 183., 194., 205., 216., 102., 108., 114., 120.,
      126., 132., 138., 144., 0.,   0.,   0.,   0.,   100., 104., 108., 112.,
      116., 120., 124., 128., 257., 266., 275., 284., 145., 150., 155., 160.,
      315., 326., 337., 348., 174., 180., 186., 192., 198., 204., 210., 216.,
      0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,  304.,  324.,
      344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,  644.,  680.,
      369.,  391.,  413.,  435.,  840.,  892.,  944.,  996.,  503.,  533.,
      563.,  593.,  178.,  222.,  266.,  310.,  354.,  398.,  442.,  486.,
      912.,  1016., 1120., 1224., 622.,  682.,  742.,  802.,  1448., 1584.,
      1720., 1856., 890.,  966.,  1042., 1118., 1984., 2152., 2320., 2488.,
      1158., 1250., 1342., 1434., 485.,  523.,  561.,  599.,  637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      1644., 1744., 1844., 1944., 905.,  959.,  1013., 1067., 1912., 2028.,
      2144., 2260., 1039., 1101., 1163., 1225., 994.,  1102., 1210., 1318.,
      1426., 1534., 1642., 1750., 3056., 3288., 3520., 3752., 1694., 1818.,
      1942., 2066., 3592., 3856., 4120., 4384., 1962., 2102., 2242., 2382.,
      4128., 4424., 4720., 5016., 2230., 2386., 2542., 2698., 893.,  963.,
      1033., 1103., 1173., 1243., 1313., 1383., 2448., 2596., 2744., 2892.,
      1307., 1385., 1463., 1541., 2716., 2880., 3044., 3208., 1441., 1527.,
      1613., 1699., 2984., 3164., 3344., 3524., 1575., 1669., 1763., 1857.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  193.,  215.,  237.,  259.,  0.,    0.,
      0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,
      304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,
      644.,  680.,  369.,  391.,  413.,  435.,  457.,  479.,  501.,  523.,
      0.,    0.,    0.,    0.,    172.,  208.,  244.,  280.,  316.,  352.,
      388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,  688.,  740.,
      1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056., 1124., 1192.,
      1260., 1328., 0.,    0.,    0.,    0.,    383.,  413.,  443.,  473.,
      503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312., 637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      955.,  1001., 1047., 1093., 0.,    0.,    0.,    0.,    743.,  773.,
      803.,  833.,  863.,  893.,  923.,  953.,  1924., 1992., 2060., 2128.,
      1093., 1131., 1169., 1207., 2384., 2468., 2552., 2636., 1323., 1369.,
      1415., 1461., 1507., 1553., 1599., 1645., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      510.,   550.,   590.,   630.,   670.,   710.,   750.,   790.,   2148.,
      2292.,  2436.,  2580.,  1734.,  1838.,  1942.,  2046.,  4276.,  4548.,
      4820.,  5092.,  2798.,  2966.,  3134.,  3302.,  6404.,  6804.,  7204.,
      7604.,  3862.,  4094.,  4326.,  4558.,  1180.,  1516.,  1852.,  2188.,
      2524.,  2860.,  3196.,  3532.,  6664.,  7464.,  8264.,  9064.,  4652.,
      5116.,  5580.,  6044.,  10920., 11976., 13032., 14088., 6780.,  7372.,
      7964.,  8556.,  15176., 16488., 17800., 19112., 8908.,  9628.,  10348.,
      11068., 3742.,  4038.,  4334.,  4630.,  4926.,  5222.,  5518.,  5814.,
      10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,  7070.,  12788.,
      13572., 14356., 15140., 7054.,  7478.,  7902.,  8326.,  14916., 15828.,
      16740., 17652., 8118.,  8606.,  9094.,  9582.,  7644.,  8492.,  9340.,
      10188., 11036., 11884., 12732., 13580., 23688., 25512., 27336., 29160.,
      13164., 14140., 15116., 16092., 27944., 30024., 32104., 34184., 15292.,
      16396., 17500., 18604., 32200., 34536., 36872., 39208., 17420., 18652.,
      19884., 21116., 6974.,  7526.,  8078.,  8630.,  9182.,  9734.,  10286.,
      10838., 19172., 20340., 21508., 22676., 10246., 10862., 11478., 12094.,
      21300., 22596., 23892., 25188., 11310., 11990., 12670., 13350., 23428.,
      24852., 26276., 27700., 12374., 13118., 13862., 14606.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  1454.,  1622.,  1790.,
      1958.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,   630.,
      670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,  1734.,
      1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,  2966.,
      3134.,  3302.,  3470.,  3638.,  3806.,  3974.,  0.,     0.,     0.,
      0.,     1140.,  1412.,  1684.,  1956.,  2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,  7416.,  8088.,  4356.,  4756.,  5156.,  5556.,  10328.,
      11256., 12184., 13112., 6484.,  7012.,  7540.,  8068.,  8596.,  9124.,
      9652.,  10180., 0.,     0.,     0.,     0.,     2934.,  3166.,  3398.,
      3630.,  3862.,  4094.,  4326.,  4558.,  8532.,  9060.,  9588.,  10116.,
      4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,
      6350.,  6710.,  7070.,  7430.,  7790.,  8150.,  8510.,  0.,     0.,
      0.,     0.,     5718.,  5950.,  6182.,  6414.,  6646.,  6878.,  7110.,
      7342.,  14868., 15396., 15924., 16452., 8478.,  8774.,  9070.,  9366.,
      18532., 19188., 19844., 20500., 10310., 10670., 11030., 11390., 11750.,
      12110., 12470., 12830., 0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2.,  5.,   4.,  9.,   6.,  5.,  14., 10., 24., 15.,
      16., 40.,  26., 60.,  36., 20., 44., 25., 54., 30.,
      46., 100., 56., 120., 66., 35., 74., 40., 84., 45.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  4.,  5.,  14., 10., 12., 10., 14., 36., 24., 30.,
      12., 15., 34., 20., 24., 21., 24., 55., 32., 36., 0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11.,  28.,  25.,  56.,  39.,  29.,  88.,  67.,  164., 105.,
      100., 260., 176., 412., 252., 143., 316., 181., 392., 219.,
      328., 716., 404., 868., 480., 257., 544., 295., 620., 333.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  23., 29.,  88.,  67.,  81.,
      58.,  86.,  232., 162., 206., 83., 105., 240., 143., 173.,
      149., 171., 396., 233., 263., 0.,  0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70.,   180.,  174.,  388.,  278.,  190.,  612.,  486.,  1204., 782.,
      692.,  1848., 1284., 3032., 1876., 1078., 2388., 1374., 2980., 1670.,
      2468., 5400., 3060., 6584., 3652., 1966., 4164., 2262., 4756., 2558.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  150., 190., 612.,  486.,  590.,
      380.,  588.,  1640., 1180., 1516., 614., 782., 1796., 1078., 1310.,
      1118., 1286., 2996., 1774., 2006., 0.,   0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,  9.,   10.,
      25.,  28.,  18.,  20.,  43.,  48.,  27.,  30.,  27.,  32.,  68.,  80.,
      45.,  52.,  104., 120., 63.,  72.,  36.,  40.,  79.,  88.,  45.,  50.,
      97.,  108., 54.,  60.,  81.,  92.,  176., 200., 99.,  112., 212., 240.,
      117., 132., 63.,  70.,  133., 148., 72.,  80.,  151., 168., 81.,  90.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  7.,  10., 6.,  8.,  10.,  12.,  7.,  8.,
      9.,  10., 25., 28., 18., 20., 22., 24., 16.,  20.,  24., 28.,
      62., 72., 42., 48., 54., 60., 21., 24., 27.,  30.,  61., 68.,
      36., 40., 44., 48., 39., 42., 45., 48., 103., 110., 60., 64.,
      68., 72., 0.,  0.,  0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,  23.,  40.,   60.,   39.,  53.,  84.,   120.,  61.,  83.,
      53.,  59.,  160.,  180.,  123., 137., 300.,  336.,  193., 215.,
      172., 208., 452.,  540.,  312., 364., 732.,  852.,  452., 520.,
      263., 293., 580.,  648.,  333., 371., 720.,  804.,  403., 449.,
      592., 676., 1292., 1476., 732., 832., 1572., 1788., 872., 988.,
      473., 527., 1000., 1116., 543., 605., 1140., 1272., 613., 683.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  40.,  60.,  39.,  53.,  67.,  81.,  41.,  47.,
      53.,  59.,  160., 180., 123., 137., 151., 165., 94.,  122., 150., 178.,
      408., 480., 290., 334., 378., 422., 149., 171., 193., 215., 440., 492.,
      263., 293., 323., 353., 281., 303., 325., 347., 752., 804., 443., 473.,
      503., 533., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      110.,  150.,  260.,  404.,   278.,  382.,  596.,   868.,   446.,  614.,
      350.,  390.,  1124., 1268.,  902.,  1006., 2228.,  2500.,  1454., 1622.,
      1204., 1476., 3256., 3928.,  2308., 2708., 5464.,  6392.,  3412., 3940.,
      2006., 2238., 4436., 4964.,  2558., 2854., 5540.,  6196.,  3110., 3470.,
      4516., 5172., 9880., 11320., 5620., 6404., 12088., 13784., 6724., 7636.,
      3662., 4086., 7748., 8660.,  4214., 4702., 8852.,  9892.,  4766., 5318.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  260.,  404.,  278.,  382.,  486.,  590.,
      270.,  310.,  350.,  390.,  1124., 1268., 902.,  1006., 1110., 1214.,
      620.,  828.,  1036., 1244., 2920., 3464., 2140., 2476., 2812., 3148.,
      1118., 1286., 1454., 1622., 3332., 3732., 2006., 2238., 2470., 2702.,
      2126., 2294., 2462., 2630., 5732., 6132., 3398., 3630., 3862., 4094.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,  10.,  12.,  14.,  16.,
      21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,  17.,  18.,  19.,  20.,
      47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,  81.,  86.,  91.,  96.,
      51.,  54.,  57.,  60.,  49.,  54.,  59.,  64.,  124., 136., 148., 160.,
      83.,  90.,  97.,  104., 192., 208., 224., 240., 117., 126., 135., 144.,
      68.,  72.,  76.,  80.,  149., 158., 167., 176., 85.,  90.,  95.,  100.,
      183., 194., 205., 216., 102., 108., 114., 120., 151., 162., 173., 184.,
      328., 352., 376., 400., 185., 198., 211., 224., 396., 424., 452., 480.,
      219., 234., 249., 264., 119., 126., 133., 140., 251., 266., 281., 296.,
      136., 144., 152., 160., 285., 302., 319., 336., 153., 162., 171., 180.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      42.,  44.,  46.,  48.,  28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,
      114., 124., 134., 144., 78.,  84.,  90.,  96.,  102., 108., 114., 120.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  75.,  78.,  81.,  84.,
      87.,  90.,  93.,  96.,  199., 206., 213., 220., 116., 120., 124., 128.,
      132., 136., 140., 144., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,   35.,   41.,   47.,   64.,   84.,   104.,  124.,  67.,   81.,
      95.,   109.,  140.,  176.,  212.,  248.,  105.,  127.,  149.,  171.,
      101.,  107.,  113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,
      263.,  277.,  572.,  608.,  644.,  680.,  369.,  391.,  413.,  435.,
      316.,  352.,  388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,
      688.,  740.,  1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056.,
      503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312., 637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      1120., 1204., 1288., 1372., 2444., 2628., 2812., 2996., 1388., 1488.,
      1588., 1688., 2980., 3196., 3412., 3628., 1656., 1772., 1888., 2004.,
      905.,  959.,  1013., 1067., 1912., 2028., 2144., 2260., 1039., 1101.,
      1163., 1225., 2180., 2312., 2444., 2576., 1173., 1243., 1313., 1383.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,  35.,  41.,  47.,  64.,  84.,   104.,
      124.,  67.,   81.,   95.,   109., 123., 137., 151., 165., 77.,   83.,
      89.,   95.,   101.,  107.,  113., 119., 304., 324., 344., 364.,  235.,
      249.,  263.,  277.,  291.,  305., 319., 333., 166., 194., 222.,  250.,
      278.,  306.,  334.,  362.,  760., 832., 904., 976., 546., 590.,  634.,
      678.,  722.,  766.,  810.,  854., 281., 303., 325., 347., 369.,  391.,
      413.,  435.,  840.,  892.,  944., 996., 503., 533., 563., 593.,  623.,
      653.,  683.,  713.,  545.,  567., 589., 611., 633., 655., 677.,  699.,
      1464., 1516., 1568., 1620., 863., 893., 923., 953., 983., 1013., 1043.,
      1073., 0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,   230.,   270.,   310.,   420.,   564.,   708.,   852.,   486.,
      590.,   694.,   798.,   1012.,  1284.,  1556.,  1828.,  782.,   950.,
      1118.,  1286.,  670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,
      2580.,  1734.,  1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,
      2798.,  2966.,  3134.,  3302.,  2228.,  2500.,  2772.,  3044.,  6072.,
      6744.,  7416.,  8088.,  4356.,  4756.,  5156.,  5556.,  10328., 11256.,
      12184., 13112., 6484.,  7012.,  7540.,  8068.,  3862.,  4094.,  4326.,
      4558.,  8532.,  9060.,  9588.,  10116., 4926.,  5222.,  5518.,  5814.,
      10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,  7070.,  8612.,
      9268.,  9924.,  10580., 18840., 20280., 21720., 23160., 10740., 11524.,
      12308., 13092., 23096., 24792., 26488., 28184., 12868., 13780., 14692.,
      15604., 7054.,  7478.,  7902.,  8326.,  14916., 15828., 16740., 17652.,
      8118.,  8606.,  9094.,  9582.,  17044., 18084., 19124., 20164., 9182.,
      9734.,  10286., 10838.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,  150.,  190.,  230.,  270.,  310.,  420.,   564.,
      708.,   852.,   486.,  590.,  694.,  798.,  902.,  1006., 1110.,  1214.,
      510.,   550.,   590.,  630.,  670.,  710.,  750.,  790.,  2148.,  2292.,
      2436.,  2580.,  1734., 1838., 1942., 2046., 2150., 2254., 2358.,  2462.,
      1100.,  1308.,  1516., 1724., 1932., 2140., 2348., 2556., 5480.,  6024.,
      6568.,  7112.,  4060., 4396., 4732., 5068., 5404., 5740., 6076.,  6412.,
      2126.,  2294.,  2462., 2630., 2798., 2966., 3134., 3302., 6404.,  6804.,
      7204.,  7604.,  3862., 4094., 4326., 4558., 4790., 5022., 5254.,  5486.,
      4142.,  4310.,  4478., 4646., 4814., 4982., 5150., 5318., 11204., 11604.,
      12004., 12404., 6646., 6878., 7110., 7342., 7574., 7806., 8038.,  8270.,
      0.,     0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,     0.,
      0.,     0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,  9.,   6.,  4.,  5.,  14., 10., 24., 15.,
      11., 16., 40.,  26., 60.,  36., 16., 20., 44., 25., 54., 30.,
      35., 46., 100., 56., 120., 66., 28., 35., 74., 40., 84., 45.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  0., 4.,  5.,  14., 10., 12., 0.,
      10., 14., 36., 24., 30., 0., 12., 15., 34., 20., 24., 0.,
      21., 24., 55., 32., 36., 0., 0.,  0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  56.,  39.,  23.,  29.,  88.,  67.,  164., 105.,
      64.,  100., 260., 176., 412., 252., 113., 143., 316., 181., 392., 219.,
      244., 328., 716., 404., 868., 480., 203., 257., 544., 295., 620., 333.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  0., 23., 29.,  88.,  67.,  81.,  0.,
      58.,  86.,  232., 162., 206., 0., 83., 105., 240., 143., 173., 0.,
      149., 171., 396., 233., 263., 0., 0.,  0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  150.,  190.,  612.,
      486.,  1204., 782.,  420.,  692.,  1848., 1284., 3032., 1876.,
      846.,  1078., 2388., 1374., 2980., 1670., 1812., 2468., 5400.,
      3060., 6584., 3652., 1542., 1966., 4164., 2262., 4756., 2558.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  0.,    150.,  190.,  612.,
      486.,  590.,  0.,    380.,  588.,  1640., 1180., 1516., 0.,
      614.,  782.,  1796., 1078., 1310., 0.,    1118., 1286., 2996.,
      1774., 2006., 0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  7.,   10.,  6.,  8.,   13.,  18.,  9.,   12.,
      7.,  8.,  9.,  10., 25.,  28.,  18., 20.,  43.,  48.,  27.,  30.,
      17., 22., 27., 32., 68.,  80.,  45., 52.,  104., 120., 63.,  72.,
      28., 32., 36., 40., 79.,  88.,  45., 50.,  97.,  108., 54.,  60.,
      59., 70., 81., 92., 176., 200., 99., 112., 212., 240., 117., 132.,
      49., 56., 63., 70., 133., 148., 72., 80.,  151., 168., 81.,  90.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  7.,   10.,  6.,  8.,  10., 12., 0., 0.,
      7.,  8.,  9.,  10., 25.,  28.,  18., 20., 22., 24., 0., 0.,
      16., 20., 24., 28., 62.,  72.,  42., 48., 54., 60., 0., 0.,
      21., 24., 27., 30., 61.,  68.,  36., 40., 44., 48., 0., 0.,
      39., 42., 45., 48., 103., 110., 60., 64., 68., 72., 0., 0.,
      0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,   17.,   23.,   40.,  60.,  39.,  53.,  84.,   120.,  61.,
      83.,  41.,   47.,   53.,   59.,  160., 180., 123., 137.,  300.,  336.,
      193., 215.,  100.,  136.,  172., 208., 452., 540., 312.,  364.,  732.,
      852., 452.,  520.,  203.,  233., 263., 293., 580., 648.,  333.,  371.,
      720., 804.,  403.,  449.,  424., 508., 592., 676., 1292., 1476., 732.,
      832., 1572., 1788., 872.,  988., 365., 419., 473., 527.,  1000., 1116.,
      543., 605.,  1140., 1272., 613., 683.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  40.,  60.,  39.,  53.,  67.,  81.,  0., 0.,
      41.,  47.,  53.,  59.,  160., 180., 123., 137., 151., 165., 0., 0.,
      94.,  122., 150., 178., 408., 480., 290., 334., 378., 422., 0., 0.,
      149., 171., 193., 215., 440., 492., 263., 293., 323., 353., 0., 0.,
      281., 303., 325., 347., 752., 804., 443., 473., 503., 533., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,   150.,   260.,  404.,  278.,  382.,  596.,
      868.,  446.,  614.,   270.,   310.,  350.,  390.,  1124., 1268.,
      902.,  1006., 2228.,  2500.,  1454., 1622., 660.,  932.,  1204.,
      1476., 3256., 3928.,  2308.,  2708., 5464., 6392., 3412., 3940.,
      1542., 1774., 2006.,  2238.,  4436., 4964., 2558., 2854., 5540.,
      6196., 3110., 3470.,  3204.,  3860., 4516., 5172., 9880., 11320.,
      5620., 6404., 12088., 13784., 6724., 7636., 2814., 3238., 3662.,
      4086., 7748., 8660.,  4214.,  4702., 8852., 9892., 4766., 5318.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  260.,  404.,  278.,  382.,  486.,
      590.,  0.,    0.,    270.,  310.,  350.,  390.,  1124., 1268.,
      902.,  1006., 1110., 1214., 0.,    0.,    620.,  828.,  1036.,
      1244., 2920., 3464., 2140., 2476., 2812., 3148., 0.,    0.,
      1118., 1286., 1454., 1622., 3332., 3732., 2006., 2238., 2470.,
      2702., 0.,    0.,    2126., 2294., 2462., 2630., 5732., 6132.,
      3398., 3630., 3862., 4094., 0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,
      29.,  34.,  39.,  44.,  49.,  54.,  59.,  64.,  124., 136., 148., 160.,
      83.,  90.,  97.,  104., 192., 208., 224., 240., 117., 126., 135., 144.,
      52.,  56.,  60.,  64.,  68.,  72.,  76.,  80.,  149., 158., 167., 176.,
      85.,  90.,  95.,  100., 183., 194., 205., 216., 102., 108., 114., 120.,
      107., 118., 129., 140., 151., 162., 173., 184., 328., 352., 376., 400.,
      185., 198., 211., 224., 396., 424., 452., 480., 219., 234., 249., 264.,
      91.,  98.,  105., 112., 119., 126., 133., 140., 251., 266., 281., 296.,
      136., 144., 152., 160., 285., 302., 319., 336., 153., 162., 171., 180.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  0.,   0.,   0.,   0.,
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  42.,  44.,  46.,  48.,  0.,   0.,   0.,   0.,
      28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,  114., 124., 134., 144.,
      78.,  84.,  90.,  96.,  102., 108., 114., 120., 0.,   0.,   0.,   0.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  0.,   0.,   0.,   0.,
      75.,  78.,  81.,  84.,  87.,  90.,  93.,  96.,  199., 206., 213., 220.,
      116., 120., 124., 128., 132., 136., 140., 144., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  77.,   83.,   89.,   95.,   101.,  107.,
      113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,
      572.,  608.,  644.,  680.,  369.,  391.,  413.,  435.,  172.,  208.,
      244.,  280.,  316.,  352.,  388.,  424.,  836.,  924.,  1012., 1100.,
      584.,  636.,  688.,  740.,  1372., 1492., 1612., 1732., 852.,  920.,
      988.,  1056., 383.,  413.,  443.,  473.,  503.,  533.,  563.,  593.,
      1108., 1176., 1244., 1312., 637.,  675.,  713.,  751.,  1376., 1460.,
      1544., 1628., 771.,  817.,  863.,  909.,  784.,  868.,  952.,  1036.,
      1120., 1204., 1288., 1372., 2444., 2628., 2812., 2996., 1388., 1488.,
      1588., 1688., 2980., 3196., 3412., 3628., 1656., 1772., 1888., 2004.,
      689.,  743.,  797.,  851.,  905.,  959.,  1013., 1067., 1912., 2028.,
      2144., 2260., 1039., 1101., 1163., 1225., 2180., 2312., 2444., 2576.,
      1173., 1243., 1313., 1383.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,   29.,   35.,   41.,   47.,   64.,   84.,  104.,
      124., 67.,  81.,  95.,   109.,  123.,  137.,  151.,  165.,  0.,   0.,
      0.,   0.,   77.,  83.,   89.,   95.,   101.,  107.,  113.,  119., 304.,
      324., 344., 364., 235.,  249.,  263.,  277.,  291.,  305.,  319., 333.,
      0.,   0.,   0.,   0.,    166.,  194.,  222.,  250.,  278.,  306., 334.,
      362., 760., 832., 904.,  976.,  546.,  590.,  634.,  678.,  722., 766.,
      810., 854., 0.,   0.,    0.,    0.,    281.,  303.,  325.,  347., 369.,
      391., 413., 435., 840.,  892.,  944.,  996.,  503.,  533.,  563., 593.,
      623., 653., 683., 713.,  0.,    0.,    0.,    0.,    545.,  567., 589.,
      611., 633., 655., 677.,  699.,  1464., 1516., 1568., 1620., 863., 893.,
      923., 953., 983., 1013., 1043., 1073., 0.,    0.,    0.,    0.,   0.,
      0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  510.,   550.,   590.,
      630.,   670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,
      1734.,  1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,
      2966.,  3134.,  3302.,  1140.,  1412.,  1684.,  1956.,  2228.,  2500.,
      2772.,  3044.,  6072.,  6744.,  7416.,  8088.,  4356.,  4756.,  5156.,
      5556.,  10328., 11256., 12184., 13112., 6484.,  7012.,  7540.,  8068.,
      2934.,  3166.,  3398.,  3630.,  3862.,  4094.,  4326.,  4558.,  8532.,
      9060.,  9588.,  10116., 4926.,  5222.,  5518.,  5814.,  10660., 11316.,
      11972., 12628., 5990.,  6350.,  6710.,  7070.,  5988.,  6644.,  7300.,
      7956.,  8612.,  9268.,  9924.,  10580., 18840., 20280., 21720., 23160.,
      10740., 11524., 12308., 13092., 23096., 24792., 26488., 28184., 12868.,
      13780., 14692., 15604., 5358.,  5782.,  6206.,  6630.,  7054.,  7478.,
      7902.,  8326.,  14916., 15828., 16740., 17652., 8118.,  8606.,  9094.,
      9582.,  17044., 18084., 19124., 20164., 9182.,  9734.,  10286., 10838.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  190.,   230.,   270.,   310.,   420.,  564.,
      708.,  852.,  486.,  590.,  694.,   798.,   902.,   1006.,  1110., 1214.,
      0.,    0.,    0.,    0.,    510.,   550.,   590.,   630.,   670.,  710.,
      750.,  790.,  2148., 2292., 2436.,  2580.,  1734.,  1838.,  1942., 2046.,
      2150., 2254., 2358., 2462., 0.,     0.,     0.,     0.,     1100., 1308.,
      1516., 1724., 1932., 2140., 2348.,  2556.,  5480.,  6024.,  6568., 7112.,
      4060., 4396., 4732., 5068., 5404.,  5740.,  6076.,  6412.,  0.,    0.,
      0.,    0.,    2126., 2294., 2462.,  2630.,  2798.,  2966.,  3134., 3302.,
      6404., 6804., 7204., 7604., 3862.,  4094.,  4326.,  4558.,  4790., 5022.,
      5254., 5486., 0.,    0.,    0.,     0.,     4142.,  4310.,  4478., 4646.,
      4814., 4982., 5150., 5318., 11204., 11604., 12004., 12404., 6646., 6878.,
      7110., 7342., 7574., 7806., 8038.,  8270.,  0.,     0.,     0.,    0.,
      0.,    0.,    0.,    0.,    0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,    0.,    0.,    0.,     0.,     0.,     0.,     0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,  5.,   4.,  9.,  6.,  13., 8.,  4.,   5.,  14.,  10.,
      24.,  15., 34.,  20., 12., 18., 44., 28., 64.,  38., 84.,  48.,
      20.,  25., 54.,  30., 64., 35., 74., 40., 44.,  58., 124., 68.,
      144., 78., 164., 88., 36., 45., 94., 50., 104., 55., 114., 60.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  9.,  6.,  9.,  0.,  4.,  5.,  14., 10.,
      24., 15., 18., 0.,  11., 16., 40., 26., 60., 36., 45., 0.,
      16., 20., 44., 25., 54., 30., 36., 0.,  28., 32., 71., 40.,
      87., 48., 54., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,  28.,   25.,  56.,  39.,  84.,  53.,  23.,  29.,  88.,  67.,
      164.,  105., 240.,  143., 70.,  114., 288., 190., 440., 266., 592., 342.,
      143.,  181., 392.,  219., 468., 257., 544., 295., 310., 418., 896., 494.,
      1048., 570., 1200., 646., 263., 333., 696., 371., 772., 409., 848., 447.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  56.,  39.,  61.,  0.,   23.,  29.,  88.,  67.,
      164., 105., 127., 0.,   64.,  100., 260., 176., 412., 252., 320., 0.,
      113., 143., 316., 181., 392., 219., 265., 0.,   203., 233., 520., 295.,
      644., 357., 403., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  596.,  382.,  150.,  190.,
      612.,  486.,  1204., 782.,  1796., 1078., 460.,  796.,  2056., 1388.,
      3240., 1980., 4424., 2572., 1078., 1374., 2980., 1670., 3572., 1966.,
      4164., 2262., 2316., 3164., 6792., 3756., 7976., 4348., 9160., 4940.,
      2006., 2558., 5348., 2854., 5940., 3150., 6532., 3446.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  446.,  0.,    150.,  190.,
      612.,  486.,  1204., 782.,  950.,  0.,    420.,  692.,  1848., 1284.,
      3032., 1876., 2404., 0.,    846.,  1078., 2388., 1374., 2980., 1670.,
      2030., 0.,    1542., 1774., 3972., 2262., 4948., 2750., 3110., 0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,
      19.,  26.,  12.,  16.,  7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,
      43.,  48.,  27.,  30.,  61.,  68.,  36.,  40.,  18.,  24.,  30.,  36.,
      74.,  88.,  48.,  56.,  110., 128., 66.,  76.,  146., 168., 84.,  96.,
      35.,  40.,  45.,  50.,  97.,  108., 54.,  60.,  115., 128., 63.,  70.,
      133., 148., 72.,  80.,  74.,  88.,  102., 116., 218., 248., 120., 136.,
      254., 288., 138., 156., 290., 328., 156., 176., 63.,  72.,  81.,  90.,
      169., 188., 90.,  100., 187., 208., 99.,  110., 205., 228., 108., 120.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,  4.,  7.,   10.,  6.,  8.,  13.,  18.,  9.,  12.,
      15.,  18.,  0.,  0.,  7.,   8.,   9.,  10., 25.,  28.,  18., 20.,
      43.,  48.,  27., 30., 33.,  36.,  0.,  0.,  17.,  22.,  27., 32.,
      68.,  80.,  45., 52., 104., 120., 63., 72., 81.,  90.,  0.,  0.,
      28.,  32.,  36., 40., 79.,  88.,  45., 50., 97.,  108., 54., 60.,
      66.,  72.,  0.,  0.,  52.,  56.,  60., 64., 133., 142., 75., 80.,
      163., 174., 90., 96., 102., 108., 0.,  0.,  0.,   0.,   0.,  0.,
      0.,   0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   128.,  180.,  83.,   113.,  41.,   47.,   53.,   59.,
      160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,  440.,  492.,
      263.,  293.,  106.,  150.,  194.,  238.,  496.,  600.,  334.,  394.,
      776.,  912.,  474.,  550.,  1056., 1224., 614.,  706.,  257.,  295.,
      333.,  371.,  720.,  804.,  403.,  449.,  860.,  960.,  473.,  527.,
      1000., 1116., 543.,  605.,  538.,  646.,  754.,  862.,  1616., 1848.,
      894.,  1018., 1896., 2160., 1034., 1174., 2176., 2472., 1174., 1330.,
      473.,  543.,  613.,  683.,  1280., 1428., 683.,  761.,  1420., 1584.,
      753.,  839.,  1560., 1740., 823.,  917.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,  23.,  40.,  60.,  39.,  53.,  84.,  120.,  61.,  83.,
      105.,  127.,  0.,   0.,   41.,  47.,  53.,  59.,  160., 180.,  123., 137.,
      300.,  336.,  193., 215., 237., 259., 0.,   0.,   100., 136.,  172., 208.,
      452.,  540.,  312., 364., 732., 852., 452., 520., 588., 656.,  0.,   0.,
      203.,  233.,  263., 293., 580., 648., 333., 371., 720., 804.,  403., 449.,
      495.,  541.,  0.,   0.,   383., 413., 443., 473., 988., 1056., 561., 599.,
      1224., 1308., 679., 725., 771., 817., 0.,   0.,   0.,   0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   596.,
      868.,   446.,   614.,   932.,   1332.,  614.,   846.,   270.,   310.,
      350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,  1454.,
      1622.,  3332.,  3732.,  2006.,  2238.,  700.,   1036.,  1372.,  1708.,
      3592.,  4392.,  2476.,  2940.,  5800.,  6856.,  3580.,  4172.,  8008.,
      9320.,  4684.,  5404.,  1966.,  2262.,  2558.,  2854.,  5540.,  6196.,
      3110.,  3470.,  6644.,  7428.,  3662.,  4086.,  7748.,  8660.,  4214.,
      4702.,  4092.,  4940.,  5788.,  6636.,  12424., 14248., 6892.,  7868.,
      14632., 16712., 7996.,  9100.,  16840., 19176., 9100.,  10332., 3662.,
      4214.,  4766.,  5318.,  9956.,  11124., 5318.,  5934.,  11060., 12356.,
      5870.,  6550.,  12164., 13588., 6422.,  7166.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,   260.,  404.,  278.,  382.,  596.,  868.,
      446.,  614.,  782.,  950.,   0.,    0.,    270.,  310.,  350.,  390.,
      1124., 1268., 902.,  1006.,  2228., 2500., 1454., 1622., 1790., 1958.,
      0.,    0.,    660.,  932.,   1204., 1476., 3256., 3928., 2308., 2708.,
      5464., 6392., 3412., 3940.,  4468., 4996., 0.,    0.,    1542., 1774.,
      2006., 2238., 4436., 4964.,  2558., 2854., 5540., 6196., 3110., 3470.,
      3830., 4190., 0.,    0.,     2934., 3166., 3398., 3630., 7604., 8132.,
      4334., 4630., 9476., 10132., 5270., 5630., 5990., 6350., 0.,    0.,
      0.,    0.,    0.,    0.,     0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,
      31.,  38.,  45.,  52.,  20.,  24.,  28.,  32.,  13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  30.,  36.,  42.,  48.,  54.,  60.,  66.,  72.,
      134., 148., 162., 176., 88.,  96.,  104., 112., 202., 220., 238., 256.,
      122., 132., 142., 152., 270., 292., 314., 336., 156., 168., 180., 192.,
      65.,  70.,  75.,  80.,  85.,  90.,  95.,  100., 183., 194., 205., 216.,
      102., 108., 114., 120., 217., 230., 243., 256., 119., 126., 133., 140.,
      251., 266., 281., 296., 136., 144., 152., 160., 134., 148., 162., 176.,
      190., 204., 218., 232., 406., 436., 466., 496., 224., 240., 256., 272.,
      474., 508., 542., 576., 258., 276., 294., 312., 542., 580., 618., 656.,
      292., 312., 332., 352., 117., 126., 135., 144., 153., 162., 171., 180.,
      319., 338., 357., 376., 170., 180., 190., 200., 353., 374., 395., 416.,
      187., 198., 209., 220., 387., 410., 433., 456., 204., 216., 228., 240.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,
      27.,  30.,  33.,  36.,  0.,   0.,   0.,   0.,   13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,  63.,  66.,  69.,  72.,
      0.,   0.,   0.,   0.,   29.,  34.,  39.,  44.,  49.,  54.,  59.,  64.,
      124., 136., 148., 160., 83.,  90.,  97.,  104., 192., 208., 224., 240.,
      117., 126., 135., 144., 153., 162., 171., 180., 0.,   0.,   0.,   0.,
      52.,  56.,  60.,  64.,  68.,  72.,  76.,  80.,  149., 158., 167., 176.,
      85.,  90.,  95.,  100., 183., 194., 205., 216., 102., 108., 114., 120.,
      126., 132., 138., 144., 0.,   0.,   0.,   0.,   100., 104., 108., 112.,
      116., 120., 124., 128., 257., 266., 275., 284., 145., 150., 155., 160.,
      315., 326., 337., 348., 174., 180., 186., 192., 198., 204., 210., 216.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  216.,  268.,  320.,  372.,  143.,  173.,
      203.,  233.,  77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,
      304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,
      644.,  680.,  369.,  391.,  413.,  435.,  840.,  892.,  944.,  996.,
      503.,  533.,  563.,  593.,  178.,  222.,  266.,  310.,  354.,  398.,
      442.,  486.,  912.,  1016., 1120., 1224., 622.,  682.,  742.,  802.,
      1448., 1584., 1720., 1856., 890.,  966.,  1042., 1118., 1984., 2152.,
      2320., 2488., 1158., 1250., 1342., 1434., 485.,  523.,  561.,  599.,
      637.,  675.,  713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,
      863.,  909.,  1644., 1744., 1844., 1944., 905.,  959.,  1013., 1067.,
      1912., 2028., 2144., 2260., 1039., 1101., 1163., 1225., 994.,  1102.,
      1210., 1318., 1426., 1534., 1642., 1750., 3056., 3288., 3520., 3752.,
      1694., 1818., 1942., 2066., 3592., 3856., 4120., 4384., 1962., 2102.,
      2242., 2382., 4128., 4424., 4720., 5016., 2230., 2386., 2542., 2698.,
      893.,  963.,  1033., 1103., 1173., 1243., 1313., 1383., 2448., 2596.,
      2744., 2892., 1307., 1385., 1463., 1541., 2716., 2880., 3044., 3208.,
      1441., 1527., 1613., 1699., 2984., 3164., 3344., 3524., 1575., 1669.,
      1763., 1857.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  193.,  215.,  237.,  259.,  0.,    0.,
      0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,
      304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,
      644.,  680.,  369.,  391.,  413.,  435.,  457.,  479.,  501.,  523.,
      0.,    0.,    0.,    0.,    172.,  208.,  244.,  280.,  316.,  352.,
      388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,  688.,  740.,
      1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056., 1124., 1192.,
      1260., 1328., 0.,    0.,    0.,    0.,    383.,  413.,  443.,  473.,
      503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312., 637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      955.,  1001., 1047., 1093., 0.,    0.,    0.,    0.,    743.,  773.,
      803.,  833.,  863.,  893.,  923.,  953.,  1924., 1992., 2060., 2128.,
      1093., 1131., 1169., 1207., 2384., 2468., 2552., 2636., 1323., 1369.,
      1415., 1461., 1507., 1553., 1599., 1645., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  1604.,  2004.,  2404.,
      2804.,  1078.,  1310.,  1542.,  1774.,  510.,   550.,   590.,   630.,
      670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,  1734.,
      1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,  2966.,
      3134.,  3302.,  6404.,  6804.,  7204.,  7604.,  3862.,  4094.,  4326.,
      4558.,  1180.,  1516.,  1852.,  2188.,  2524.,  2860.,  3196.,  3532.,
      6664.,  7464.,  8264.,  9064.,  4652.,  5116.,  5580.,  6044.,  10920.,
      11976., 13032., 14088., 6780.,  7372.,  7964.,  8556.,  15176., 16488.,
      17800., 19112., 8908.,  9628.,  10348., 11068., 3742.,  4038.,  4334.,
      4630.,  4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628.,
      5990.,  6350.,  6710.,  7070.,  12788., 13572., 14356., 15140., 7054.,
      7478.,  7902.,  8326.,  14916., 15828., 16740., 17652., 8118.,  8606.,
      9094.,  9582.,  7644.,  8492.,  9340.,  10188., 11036., 11884., 12732.,
      13580., 23688., 25512., 27336., 29160., 13164., 14140., 15116., 16092.,
      27944., 30024., 32104., 34184., 15292., 16396., 17500., 18604., 32200.,
      34536., 36872., 39208., 17420., 18652., 19884., 21116., 6974.,  7526.,
      8078.,  8630.,  9182.,  9734.,  10286., 10838., 19172., 20340., 21508.,
      22676., 10246., 10862., 11478., 12094., 21300., 22596., 23892., 25188.,
      11310., 11990., 12670., 13350., 23428., 24852., 26276., 27700., 12374.,
      13118., 13862., 14606.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  1454.,  1622.,  1790.,
      1958.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,   630.,
      670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,  1734.,
      1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,  2966.,
      3134.,  3302.,  3470.,  3638.,  3806.,  3974.,  0.,     0.,     0.,
      0.,     1140.,  1412.,  1684.,  1956.,  2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,  7416.,  8088.,  4356.,  4756.,  5156.,  5556.,  10328.,
      11256., 12184., 13112., 6484.,  7012.,  7540.,  8068.,  8596.,  9124.,
      9652.,  10180., 0.,     0.,     0.,     0.,     2934.,  3166.,  3398.,
      3630.,  3862.,  4094.,  4326.,  4558.,  8532.,  9060.,  9588.,  10116.,
      4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,
      6350.,  6710.,  7070.,  7430.,  7790.,  8150.,  8510.,  0.,     0.,
      0.,     0.,     5718.,  5950.,  6182.,  6414.,  6646.,  6878.,  7110.,
      7342.,  14868., 15396., 15924., 16452., 8478.,  8774.,  9070.,  9366.,
      18532., 19188., 19844., 20500., 10310., 10670., 11030., 11390., 11750.,
      12110., 12470., 12830., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2.,  5.,   4.,  9.,   6.,  5.,  14.,  10., 24.,  15.,
      16., 40.,  26., 60.,  36., 20., 44.,  25., 54.,  30.,
      46., 100., 56., 120., 66., 35., 74.,  40., 84.,  45.,
      76., 160., 86., 180., 96., 50., 104., 55., 114., 60.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  4.,  5.,  14., 10., 12., 10., 14., 36., 24.,
      30., 12., 15., 34., 20., 24., 26., 34., 76., 44., 54., 20., 25., 54.,
      30., 36., 35., 40., 87., 48., 54., 0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11.,  28.,   25.,  56.,   39.,  29.,  88.,  67.,  164., 105.,
      100., 260.,  176., 412.,  252., 143., 316., 181., 392., 219.,
      328., 716.,  404., 868.,  480., 257., 544., 295., 620., 333.,
      556., 1172., 632., 1324., 708., 371., 772., 409., 848., 447.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  23.,  29.,  88.,  67.,  81.,
      58.,  86.,  232., 162., 206., 83.,  105., 240., 143., 173.,
      178., 238., 536., 314., 390., 143., 181., 392., 219., 265.,
      257., 295., 644., 357., 403., 0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70.,   180.,  174.,  388.,   278.,  190.,  612.,  486.,  1204., 782.,
      692.,  1848., 1284., 3032.,  1876., 1078., 2388., 1374., 2980., 1670.,
      2468., 5400., 3060., 6584.,  3652., 1966., 4164., 2262., 4756., 2558.,
      4244., 8952., 4836., 10136., 5428., 2854., 5940., 3150., 6532., 3446.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  150.,  190.,  612.,  486.,  590.,
      380.,  588.,  1640., 1180., 1516., 614.,  782.,  1796., 1078., 1310.,
      1308., 1772., 4008., 2364., 2956., 1078., 1374., 2980., 1670., 2030.,
      1966., 2262., 4948., 2750., 3110., 0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,  9.,   10.,
      25.,  28.,  18.,  20.,  43.,  48.,  27.,  30.,  27.,  32.,  68.,  80.,
      45.,  52.,  104., 120., 63.,  72.,  36.,  40.,  79.,  88.,  45.,  50.,
      97.,  108., 54.,  60.,  81.,  92.,  176., 200., 99.,  112., 212., 240.,
      117., 132., 63.,  70.,  133., 148., 72.,  80.,  151., 168., 81.,  90.,
      135., 152., 284., 320., 153., 172., 320., 360., 171., 192., 90.,  100.,
      187., 208., 99.,  110., 205., 228., 108., 120.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,   3.,  4.,  7.,   10.,  6.,  8.,   10.,  12.,  7.,  8.,
      9.,  10.,  25., 28., 18.,  20.,  22., 24.,  16.,  20.,  24., 28.,
      62., 72.,  42., 48., 54.,  60.,  21., 24.,  27.,  30.,  61., 68.,
      36., 40.,  44., 48., 44.,  52.,  60., 68.,  134., 152., 78., 88.,
      98., 108., 35., 40., 45.,  50.,  97., 108., 54.,  60.,  66., 72.,
      65., 70.,  75., 80., 163., 174., 90., 96.,  102., 108., 0.,  0.,
      0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,  61.,   83.,
      53.,   59.,   160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,
      172.,  208.,  452.,  540.,  312.,  364.,  732.,  852.,  452.,  520.,
      263.,  293.,  580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,
      592.,  676.,  1292., 1476., 732.,  832.,  1572., 1788., 872.,  988.,
      473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272., 613.,  683.,
      1012., 1144., 2132., 2412., 1152., 1300., 2412., 2724., 1292., 1456.,
      683.,  761.,  1420., 1584., 753.,  839.,  1560., 1740., 823.,  917.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  40.,   60.,   39.,  53.,  67.,  81.,   41.,  47.,
      53.,  59.,  160., 180., 123.,  137.,  151., 165., 94.,  122.,  150., 178.,
      408., 480., 290., 334., 378.,  422.,  149., 171., 193., 215.,  440., 492.,
      263., 293., 323., 353., 310.,  370.,  430., 490., 968., 1104., 570., 646.,
      722., 798., 257., 295., 333.,  371.,  720., 804., 403., 449.,  495., 541.,
      485., 523., 561., 599., 1224., 1308., 679., 725., 771., 817.,  0.,   0.,
      0.,   0.,   0.,   0.,   0.,    0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      110.,   150.,   260.,   404.,   278.,   382.,   596.,   868.,   446.,
      614.,   350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,
      1454.,  1622.,  1204.,  1476.,  3256.,  3928.,  2308.,  2708.,  5464.,
      6392.,  3412.,  3940.,  2006.,  2238.,  4436.,  4964.,  2558.,  2854.,
      5540.,  6196.,  3110.,  3470.,  4516.,  5172.,  9880.,  11320., 5620.,
      6404.,  12088., 13784., 6724.,  7636.,  3662.,  4086.,  7748.,  8660.,
      4214.,  4702.,  8852.,  9892.,  4766.,  5318.,  7828.,  8868.,  16504.,
      18712., 8932.,  10100., 18712., 21176., 10036., 11332., 5318.,  5934.,
      11060., 12356., 5870.,  6550.,  12164., 13588., 6422.,  7166.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  260.,  404.,   278.,  382.,  486.,  590.,
      270.,  310.,  350.,  390.,  1124., 1268.,  902.,  1006., 1110., 1214.,
      620.,  828.,  1036., 1244., 2920., 3464.,  2140., 2476., 2812., 3148.,
      1118., 1286., 1454., 1622., 3332., 3732.,  2006., 2238., 2470., 2702.,
      2316., 2780., 3244., 3708., 7336., 8392.,  4348., 4940., 5532., 6124.,
      1966., 2262., 2558., 2854., 5540., 6196.,  3110., 3470., 3830., 4190.,
      3742., 4038., 4334., 4630., 9476., 10132., 5270., 5630., 5990., 6350.,
      0.,    0.,    0.,    0.,    0.,    0.,     0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,  10.,  12.,  14.,  16.,
      21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,  17.,  18.,  19.,  20.,
      47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,  81.,  86.,  91.,  96.,
      51.,  54.,  57.,  60.,  49.,  54.,  59.,  64.,  124., 136., 148., 160.,
      83.,  90.,  97.,  104., 192., 208., 224., 240., 117., 126., 135., 144.,
      68.,  72.,  76.,  80.,  149., 158., 167., 176., 85.,  90.,  95.,  100.,
      183., 194., 205., 216., 102., 108., 114., 120., 151., 162., 173., 184.,
      328., 352., 376., 400., 185., 198., 211., 224., 396., 424., 452., 480.,
      219., 234., 249., 264., 119., 126., 133., 140., 251., 266., 281., 296.,
      136., 144., 152., 160., 285., 302., 319., 336., 153., 162., 171., 180.,
      253., 270., 287., 304., 532., 568., 604., 640., 287., 306., 325., 344.,
      600., 640., 680., 720., 321., 342., 363., 384., 170., 180., 190., 200.,
      353., 374., 395., 416., 187., 198., 209., 220., 387., 410., 433., 456.,
      204., 216., 228., 240.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      42.,  44.,  46.,  48.,  28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,
      114., 124., 134., 144., 78.,  84.,  90.,  96.,  102., 108., 114., 120.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  80.,  88.,  96.,  104.,
      112., 120., 128., 136., 250., 268., 286., 304., 146., 156., 166., 176.,
      186., 196., 206., 216., 65.,  70.,  75.,  80.,  85.,  90.,  95.,  100.,
      183., 194., 205., 216., 102., 108., 114., 120., 126., 132., 138., 144.,
      125., 130., 135., 140., 145., 150., 155., 160., 315., 326., 337., 348.,
      174., 180., 186., 192., 198., 204., 210., 216., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,   35.,   41.,   47.,   64.,   84.,   104.,  124.,  67.,   81.,
      95.,   109.,  140.,  176.,  212.,  248.,  105.,  127.,  149.,  171.,
      101.,  107.,  113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,
      263.,  277.,  572.,  608.,  644.,  680.,  369.,  391.,  413.,  435.,
      316.,  352.,  388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,
      688.,  740.,  1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056.,
      503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312., 637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      1120., 1204., 1288., 1372., 2444., 2628., 2812., 2996., 1388., 1488.,
      1588., 1688., 2980., 3196., 3412., 3628., 1656., 1772., 1888., 2004.,
      905.,  959.,  1013., 1067., 1912., 2028., 2144., 2260., 1039., 1101.,
      1163., 1225., 2180., 2312., 2444., 2576., 1173., 1243., 1313., 1383.,
      1924., 2056., 2188., 2320., 4052., 4332., 4612., 4892., 2192., 2340.,
      2488., 2636., 4588., 4900., 5212., 5524., 2460., 2624., 2788., 2952.,
      1307., 1385., 1463., 1541., 2716., 2880., 3044., 3208., 1441., 1527.,
      1613., 1699., 2984., 3164., 3344., 3524., 1575., 1669., 1763., 1857.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  123.,  137.,  151.,  165.,
      77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,  304.,  324.,
      344.,  364.,  235.,  249.,  263.,  277.,  291.,  305.,  319.,  333.,
      166.,  194.,  222.,  250.,  278.,  306.,  334.,  362.,  760.,  832.,
      904.,  976.,  546.,  590.,  634.,  678.,  722.,  766.,  810.,  854.,
      281.,  303.,  325.,  347.,  369.,  391.,  413.,  435.,  840.,  892.,
      944.,  996.,  503.,  533.,  563.,  593.,  623.,  653.,  683.,  713.,
      574.,  634.,  694.,  754.,  814.,  874.,  934.,  994.,  1832., 1968.,
      2104., 2240., 1082., 1158., 1234., 1310., 1386., 1462., 1538., 1614.,
      485.,  523.,  561.,  599.,  637.,  675.,  713.,  751.,  1376., 1460.,
      1544., 1628., 771.,  817.,  863.,  909.,  955.,  1001., 1047., 1093.,
      941.,  979.,  1017., 1055., 1093., 1131., 1169., 1207., 2384., 2468.,
      2552., 2636., 1323., 1369., 1415., 1461., 1507., 1553., 1599., 1645.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,   230.,   270.,   310.,   420.,   564.,   708.,   852.,   486.,
      590.,   694.,   798.,   1012.,  1284.,  1556.,  1828.,  782.,   950.,
      1118.,  1286.,  670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,
      2580.,  1734.,  1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,
      2798.,  2966.,  3134.,  3302.,  2228.,  2500.,  2772.,  3044.,  6072.,
      6744.,  7416.,  8088.,  4356.,  4756.,  5156.,  5556.,  10328., 11256.,
      12184., 13112., 6484.,  7012.,  7540.,  8068.,  3862.,  4094.,  4326.,
      4558.,  8532.,  9060.,  9588.,  10116., 4926.,  5222.,  5518.,  5814.,
      10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,  7070.,  8612.,
      9268.,  9924.,  10580., 18840., 20280., 21720., 23160., 10740., 11524.,
      12308., 13092., 23096., 24792., 26488., 28184., 12868., 13780., 14692.,
      15604., 7054.,  7478.,  7902.,  8326.,  14916., 15828., 16740., 17652.,
      8118.,  8606.,  9094.,  9582.,  17044., 18084., 19124., 20164., 9182.,
      9734.,  10286., 10838., 14996., 16036., 17076., 18116., 31608., 33816.,
      36024., 38232., 17124., 18292., 19460., 20628., 35864., 38328., 40792.,
      43256., 19252., 20548., 21844., 23140., 10246., 10862., 11478., 12094.,
      21300., 22596., 23892., 25188., 11310., 11990., 12670., 13350., 23428.,
      24852., 26276., 27700., 12374., 13118., 13862., 14606.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   902.,   1006.,
      1110.,  1214.,  510.,   550.,   590.,   630.,   670.,   710.,   750.,
      790.,   2148.,  2292.,  2436.,  2580.,  1734.,  1838.,  1942.,  2046.,
      2150.,  2254.,  2358.,  2462.,  1100.,  1308.,  1516.,  1724.,  1932.,
      2140.,  2348.,  2556.,  5480.,  6024.,  6568.,  7112.,  4060.,  4396.,
      4732.,  5068.,  5404.,  5740.,  6076.,  6412.,  2126.,  2294.,  2462.,
      2630.,  2798.,  2966.,  3134.,  3302.,  6404.,  6804.,  7204.,  7604.,
      3862.,  4094.,  4326.,  4558.,  4790.,  5022.,  5254.,  5486.,  4332.,
      4796.,  5260.,  5724.,  6188.,  6652.,  7116.,  7580.,  13992., 15048.,
      16104., 17160., 8316.,  8908.,  9500.,  10092., 10684., 11276., 11868.,
      12460., 3742.,  4038.,  4334.,  4630.,  4926.,  5222.,  5518.,  5814.,
      10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,  7070.,  7430.,
      7790.,  8150.,  8510.,  7294.,  7590.,  7886.,  8182.,  8478.,  8774.,
      9070.,  9366.,  18532., 19188., 19844., 20500., 10310., 10670., 11030.,
      11390., 11750., 12110., 12470., 12830., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,  9.,   6.,  4.,  5.,  14.,  10., 24.,  15.,
      11., 16., 40.,  26., 60.,  36., 16., 20., 44.,  25., 54.,  30.,
      35., 46., 100., 56., 120., 66., 28., 35., 74.,  40., 84.,  45.,
      59., 76., 160., 86., 180., 96., 40., 50., 104., 55., 114., 60.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  0., 4.,  5.,  14., 10., 12., 0.,
      10., 14., 36., 24., 30., 0., 12., 15., 34., 20., 24., 0.,
      26., 34., 76., 44., 54., 0., 20., 25., 54., 30., 36., 0.,
      35., 40., 87., 48., 54., 0., 0.,  0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,   25.,  56.,   39.,  23.,  29.,  88.,  67.,  164., 105.,
      64.,  100., 260.,  176., 412.,  252., 113., 143., 316., 181., 392., 219.,
      244., 328., 716.,  404., 868.,  480., 203., 257., 544., 295., 620., 333.,
      424., 556., 1172., 632., 1324., 708., 293., 371., 772., 409., 848., 447.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  0., 23.,  29.,  88.,  67.,  81.,  0.,
      58.,  86.,  232., 162., 206., 0., 83.,  105., 240., 143., 173., 0.,
      178., 238., 536., 314., 390., 0., 143., 181., 392., 219., 265., 0.,
      257., 295., 644., 357., 403., 0., 0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,  174.,  388.,  278.,  150.,  190.,  612.,  486.,
      1204.,  782.,  420.,  692.,  1848., 1284., 3032., 1876., 846.,  1078.,
      2388.,  1374., 2980., 1670., 1812., 2468., 5400., 3060., 6584., 3652.,
      1542.,  1966., 4164., 2262., 4756., 2558., 3204., 4244., 8952., 4836.,
      10136., 5428., 2238., 2854., 5940., 3150., 6532., 3446.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  0.,    150.,  190.,  612.,  486.,
      590.,  0.,    380.,  588.,  1640., 1180., 1516., 0.,    614.,  782.,
      1796., 1078., 1310., 0.,    1308., 1772., 4008., 2364., 2956., 0.,
      1078., 1374., 2980., 1670., 2030., 0.,    1966., 2262., 4948., 2750.,
      3110., 0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,
      7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,  43.,  48.,  27.,  30.,
      17.,  22.,  27.,  32.,  68.,  80.,  45.,  52.,  104., 120., 63.,  72.,
      28.,  32.,  36.,  40.,  79.,  88.,  45.,  50.,  97.,  108., 54.,  60.,
      59.,  70.,  81.,  92.,  176., 200., 99.,  112., 212., 240., 117., 132.,
      49.,  56.,  63.,  70.,  133., 148., 72.,  80.,  151., 168., 81.,  90.,
      101., 118., 135., 152., 284., 320., 153., 172., 320., 360., 171., 192.,
      70.,  80.,  90.,  100., 187., 208., 99.,  110., 205., 228., 108., 120.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  7.,   10.,  6.,  8.,  10.,  12.,  0., 0.,
      7.,  8.,  9.,  10., 25.,  28.,  18., 20., 22.,  24.,  0., 0.,
      16., 20., 24., 28., 62.,  72.,  42., 48., 54.,  60.,  0., 0.,
      21., 24., 27., 30., 61.,  68.,  36., 40., 44.,  48.,  0., 0.,
      44., 52., 60., 68., 134., 152., 78., 88., 98.,  108., 0., 0.,
      35., 40., 45., 50., 97.,  108., 54., 60., 66.,  72.,  0., 0.,
      65., 70., 75., 80., 163., 174., 90., 96., 102., 108., 0., 0.,
      0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,
      300.,  336.,  193.,  215.,  100.,  136.,  172.,  208.,  452.,  540.,
      312.,  364.,  732.,  852.,  452.,  520.,  203.,  233.,  263.,  293.,
      580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,  424.,  508.,
      592.,  676.,  1292., 1476., 732.,  832.,  1572., 1788., 872.,  988.,
      365.,  419.,  473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272.,
      613.,  683.,  748.,  880.,  1012., 1144., 2132., 2412., 1152., 1300.,
      2412., 2724., 1292., 1456., 527.,  605.,  683.,  761.,  1420., 1584.,
      753.,  839.,  1560., 1740., 823.,  917.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  40.,   60.,   39.,  53.,  67.,  81.,  0., 0.,
      41.,  47.,  53.,  59.,  160.,  180.,  123., 137., 151., 165., 0., 0.,
      94.,  122., 150., 178., 408.,  480.,  290., 334., 378., 422., 0., 0.,
      149., 171., 193., 215., 440.,  492.,  263., 293., 323., 353., 0., 0.,
      310., 370., 430., 490., 968.,  1104., 570., 646., 722., 798., 0., 0.,
      257., 295., 333., 371., 720.,  804.,  403., 449., 495., 541., 0., 0.,
      485., 523., 561., 599., 1224., 1308., 679., 725., 771., 817., 0., 0.,
      0.,   0.,   0.,   0.,   0.,    0.,    0.,   0.,   0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,  382.,   596.,
      868.,   446.,   614.,   270.,   310.,   350.,   390.,  1124.,  1268.,
      902.,   1006.,  2228.,  2500.,  1454.,  1622.,  660.,  932.,   1204.,
      1476.,  3256.,  3928.,  2308.,  2708.,  5464.,  6392., 3412.,  3940.,
      1542.,  1774.,  2006.,  2238.,  4436.,  4964.,  2558., 2854.,  5540.,
      6196.,  3110.,  3470.,  3204.,  3860.,  4516.,  5172., 9880.,  11320.,
      5620.,  6404.,  12088., 13784., 6724.,  7636.,  2814., 3238.,  3662.,
      4086.,  7748.,  8660.,  4214.,  4702.,  8852.,  9892., 4766.,  5318.,
      5748.,  6788.,  7828.,  8868.,  16504., 18712., 8932., 10100., 18712.,
      21176., 10036., 11332., 4086.,  4702.,  5318.,  5934., 11060., 12356.,
      5870.,  6550.,  12164., 13588., 6422.,  7166.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  260.,  404.,  278.,  382.,   486.,  590.,
      0.,    0.,    270.,  310.,  350.,  390.,  1124., 1268.,  902.,  1006.,
      1110., 1214., 0.,    0.,    620.,  828.,  1036., 1244.,  2920., 3464.,
      2140., 2476., 2812., 3148., 0.,    0.,    1118., 1286.,  1454., 1622.,
      3332., 3732., 2006., 2238., 2470., 2702., 0.,    0.,     2316., 2780.,
      3244., 3708., 7336., 8392., 4348., 4940., 5532., 6124.,  0.,    0.,
      1966., 2262., 2558., 2854., 5540., 6196., 3110., 3470.,  3830., 4190.,
      0.,    0.,    3742., 4038., 4334., 4630., 9476., 10132., 5270., 5630.,
      5990., 6350., 0.,    0.,    0.,    0.,    0.,    0.,     0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,
      29.,  34.,  39.,  44.,  49.,  54.,  59.,  64.,  124., 136., 148., 160.,
      83.,  90.,  97.,  104., 192., 208., 224., 240., 117., 126., 135., 144.,
      52.,  56.,  60.,  64.,  68.,  72.,  76.,  80.,  149., 158., 167., 176.,
      85.,  90.,  95.,  100., 183., 194., 205., 216., 102., 108., 114., 120.,
      107., 118., 129., 140., 151., 162., 173., 184., 328., 352., 376., 400.,
      185., 198., 211., 224., 396., 424., 452., 480., 219., 234., 249., 264.,
      91.,  98.,  105., 112., 119., 126., 133., 140., 251., 266., 281., 296.,
      136., 144., 152., 160., 285., 302., 319., 336., 153., 162., 171., 180.,
      185., 202., 219., 236., 253., 270., 287., 304., 532., 568., 604., 640.,
      287., 306., 325., 344., 600., 640., 680., 720., 321., 342., 363., 384.,
      130., 140., 150., 160., 170., 180., 190., 200., 353., 374., 395., 416.,
      187., 198., 209., 220., 387., 410., 433., 456., 204., 216., 228., 240.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  0.,   0.,   0.,   0.,
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  42.,  44.,  46.,  48.,  0.,   0.,   0.,   0.,
      28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,  114., 124., 134., 144.,
      78.,  84.,  90.,  96.,  102., 108., 114., 120., 0.,   0.,   0.,   0.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  0.,   0.,   0.,   0.,
      80.,  88.,  96.,  104., 112., 120., 128., 136., 250., 268., 286., 304.,
      146., 156., 166., 176., 186., 196., 206., 216., 0.,   0.,   0.,   0.,
      65.,  70.,  75.,  80.,  85.,  90.,  95.,  100., 183., 194., 205., 216.,
      102., 108., 114., 120., 126., 132., 138., 144., 0.,   0.,   0.,   0.,
      125., 130., 135., 140., 145., 150., 155., 160., 315., 326., 337., 348.,
      174., 180., 186., 192., 198., 204., 210., 216., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  77.,   83.,   89.,   95.,   101.,  107.,
      113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,
      572.,  608.,  644.,  680.,  369.,  391.,  413.,  435.,  172.,  208.,
      244.,  280.,  316.,  352.,  388.,  424.,  836.,  924.,  1012., 1100.,
      584.,  636.,  688.,  740.,  1372., 1492., 1612., 1732., 852.,  920.,
      988.,  1056., 383.,  413.,  443.,  473.,  503.,  533.,  563.,  593.,
      1108., 1176., 1244., 1312., 637.,  675.,  713.,  751.,  1376., 1460.,
      1544., 1628., 771.,  817.,  863.,  909.,  784.,  868.,  952.,  1036.,
      1120., 1204., 1288., 1372., 2444., 2628., 2812., 2996., 1388., 1488.,
      1588., 1688., 2980., 3196., 3412., 3628., 1656., 1772., 1888., 2004.,
      689.,  743.,  797.,  851.,  905.,  959.,  1013., 1067., 1912., 2028.,
      2144., 2260., 1039., 1101., 1163., 1225., 2180., 2312., 2444., 2576.,
      1173., 1243., 1313., 1383., 1396., 1528., 1660., 1792., 1924., 2056.,
      2188., 2320., 4052., 4332., 4612., 4892., 2192., 2340., 2488., 2636.,
      4588., 4900., 5212., 5524., 2460., 2624., 2788., 2952., 995.,  1073.,
      1151., 1229., 1307., 1385., 1463., 1541., 2716., 2880., 3044., 3208.,
      1441., 1527., 1613., 1699., 2984., 3164., 3344., 3524., 1575., 1669.,
      1763., 1857.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  123.,  137.,  151.,  165.,
      0.,    0.,    0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,
      113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,
      291.,  305.,  319.,  333.,  0.,    0.,    0.,    0.,    166.,  194.,
      222.,  250.,  278.,  306.,  334.,  362.,  760.,  832.,  904.,  976.,
      546.,  590.,  634.,  678.,  722.,  766.,  810.,  854.,  0.,    0.,
      0.,    0.,    281.,  303.,  325.,  347.,  369.,  391.,  413.,  435.,
      840.,  892.,  944.,  996.,  503.,  533.,  563.,  593.,  623.,  653.,
      683.,  713.,  0.,    0.,    0.,    0.,    574.,  634.,  694.,  754.,
      814.,  874.,  934.,  994.,  1832., 1968., 2104., 2240., 1082., 1158.,
      1234., 1310., 1386., 1462., 1538., 1614., 0.,    0.,    0.,    0.,
      485.,  523.,  561.,  599.,  637.,  675.,  713.,  751.,  1376., 1460.,
      1544., 1628., 771.,  817.,  863.,  909.,  955.,  1001., 1047., 1093.,
      0.,    0.,    0.,    0.,    941.,  979.,  1017., 1055., 1093., 1131.,
      1169., 1207., 2384., 2468., 2552., 2636., 1323., 1369., 1415., 1461.,
      1507., 1553., 1599., 1645., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  510.,   550.,   590.,
      630.,   670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,
      1734.,  1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,
      2966.,  3134.,  3302.,  1140.,  1412.,  1684.,  1956.,  2228.,  2500.,
      2772.,  3044.,  6072.,  6744.,  7416.,  8088.,  4356.,  4756.,  5156.,
      5556.,  10328., 11256., 12184., 13112., 6484.,  7012.,  7540.,  8068.,
      2934.,  3166.,  3398.,  3630.,  3862.,  4094.,  4326.,  4558.,  8532.,
      9060.,  9588.,  10116., 4926.,  5222.,  5518.,  5814.,  10660., 11316.,
      11972., 12628., 5990.,  6350.,  6710.,  7070.,  5988.,  6644.,  7300.,
      7956.,  8612.,  9268.,  9924.,  10580., 18840., 20280., 21720., 23160.,
      10740., 11524., 12308., 13092., 23096., 24792., 26488., 28184., 12868.,
      13780., 14692., 15604., 5358.,  5782.,  6206.,  6630.,  7054.,  7478.,
      7902.,  8326.,  14916., 15828., 16740., 17652., 8118.,  8606.,  9094.,
      9582.,  17044., 18084., 19124., 20164., 9182.,  9734.,  10286., 10838.,
      10836., 11876., 12916., 13956., 14996., 16036., 17076., 18116., 31608.,
      33816., 36024., 38232., 17124., 18292., 19460., 20628., 35864., 38328.,
      40792., 43256., 19252., 20548., 21844., 23140., 7782.,  8398.,  9014.,
      9630.,  10246., 10862., 11478., 12094., 21300., 22596., 23892., 25188.,
      11310., 11990., 12670., 13350., 23428., 24852., 26276., 27700., 12374.,
      13118., 13862., 14606.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   902.,   1006.,
      1110.,  1214.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,
      630.,   670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,
      1734.,  1838.,  1942.,  2046.,  2150.,  2254.,  2358.,  2462.,  0.,
      0.,     0.,     0.,     1100.,  1308.,  1516.,  1724.,  1932.,  2140.,
      2348.,  2556.,  5480.,  6024.,  6568.,  7112.,  4060.,  4396.,  4732.,
      5068.,  5404.,  5740.,  6076.,  6412.,  0.,     0.,     0.,     0.,
      2126.,  2294.,  2462.,  2630.,  2798.,  2966.,  3134.,  3302.,  6404.,
      6804.,  7204.,  7604.,  3862.,  4094.,  4326.,  4558.,  4790.,  5022.,
      5254.,  5486.,  0.,     0.,     0.,     0.,     4332.,  4796.,  5260.,
      5724.,  6188.,  6652.,  7116.,  7580.,  13992., 15048., 16104., 17160.,
      8316.,  8908.,  9500.,  10092., 10684., 11276., 11868., 12460., 0.,
      0.,     0.,     0.,     3742.,  4038.,  4334.,  4630.,  4926.,  5222.,
      5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,
      7070.,  7430.,  7790.,  8150.,  8510.,  0.,     0.,     0.,     0.,
      7294.,  7590.,  7886.,  8182.,  8478.,  8774.,  9070.,  9366.,  18532.,
      19188., 19844., 20500., 10310., 10670., 11030., 11390., 11750., 12110.,
      12470., 12830., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,  6.,   13.,  8.,   4.,   5.,   14.,
      10.,  24.,  15.,  34.,  20., 12.,  18.,  44.,  28.,  64.,  38.,
      84.,  48.,  20.,  25.,  54., 30.,  64.,  35.,  74.,  40.,  44.,
      58.,  124., 68.,  144., 78., 164., 88.,  36.,  45.,  94.,  50.,
      104., 55.,  114., 60.,  76., 98.,  204., 108., 224., 118., 244.,
      128., 52.,  65.,  134., 70., 144., 75.,  154., 80.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,  5.,  4.,  9.,  6.,  9.,  0.,  4.,   5.,  14.,  10.,  24.,
      15.,  18., 0.,  11., 16., 40., 26., 60., 36.,  45., 0.,   16.,  20.,
      44.,  25., 54., 30., 36., 0.,  35., 46., 100., 56., 120., 66.,  81.,
      0.,   28., 35., 74., 40., 84., 45., 54., 0.,   49., 56.,  119., 64.,
      135., 72., 81., 0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,   56.,  39.,   84.,   53.,   23.,   29.,  88.,
      67.,  164., 105., 240.,  143., 70.,   114.,  288.,  190.,  440., 266.,
      592., 342., 143., 181.,  392., 219.,  468.,  257.,  544.,  295., 310.,
      418., 896., 494., 1048., 570., 1200., 646.,  263.,  333.,  696., 371.,
      772., 409., 848., 447.,  550., 722.,  1504., 798.,  1656., 874., 1808.,
      950., 383., 485., 1000., 523., 1076., 561.,  1152., 599.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  56.,  39.,  61.,  0.,   23.,   29.,  88.,
      67.,  164., 105., 127., 0.,   64.,  100., 260., 176.,  412., 252.,
      320., 0.,   113., 143., 316., 181., 392., 219., 265.,  0.,   244.,
      328., 716., 404., 868., 480., 596., 0.,   203., 257.,  544., 295.,
      620., 333., 403., 0.,   365., 419., 892., 481., 1016., 543., 613.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,   174.,  388.,   278.,  596.,  382.,  150.,  190.,
      612.,   486.,  1204.,  782.,  1796.,  1078., 460.,  796.,  2056., 1388.,
      3240.,  1980., 4424.,  2572., 1078.,  1374., 2980., 1670., 3572., 1966.,
      4164.,  2262., 2316.,  3164., 6792.,  3756., 7976., 4348., 9160., 4940.,
      2006.,  2558., 5348.,  2854., 5940.,  3150., 6532., 3446., 4172., 5532.,
      11528., 6124., 12712., 6716., 13896., 7308., 2934., 3742., 7716., 4038.,
      8308.,  4334., 8900.,  4630.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  446.,  0.,    150.,  190.,
      612.,  486.,  1204., 782.,  950.,  0.,    420.,  692.,  1848., 1284.,
      3032., 1876., 2404., 0.,    846.,  1078., 2388., 1374., 2980., 1670.,
      2030., 0.,    1812., 2468., 5400., 3060., 6584., 3652., 4564., 0.,
      1542., 1966., 4164., 2262., 4756., 2558., 3110., 0.,    2814., 3238.,
      6900., 3726., 7876., 4214., 4766., 0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,
      19.,  26.,  12.,  16.,  7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,
      43.,  48.,  27.,  30.,  61.,  68.,  36.,  40.,  18.,  24.,  30.,  36.,
      74.,  88.,  48.,  56.,  110., 128., 66.,  76.,  146., 168., 84.,  96.,
      35.,  40.,  45.,  50.,  97.,  108., 54.,  60.,  115., 128., 63.,  70.,
      133., 148., 72.,  80.,  74.,  88.,  102., 116., 218., 248., 120., 136.,
      254., 288., 138., 156., 290., 328., 156., 176., 63.,  72.,  81.,  90.,
      169., 188., 90.,  100., 187., 208., 99.,  110., 205., 228., 108., 120.,
      130., 152., 174., 196., 362., 408., 192., 216., 398., 448., 210., 236.,
      434., 488., 228., 256., 91.,  104., 117., 130., 241., 268., 126., 140.,
      259., 288., 135., 150., 277., 308., 144., 160.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,
      15.,  18.,  0.,   0.,   7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,
      43.,  48.,  27.,  30.,  33.,  36.,  0.,   0.,   17.,  22.,  27.,  32.,
      68.,  80.,  45.,  52.,  104., 120., 63.,  72.,  81.,  90.,  0.,   0.,
      28.,  32.,  36.,  40.,  79.,  88.,  45.,  50.,  97.,  108., 54.,  60.,
      66.,  72.,  0.,   0.,   59.,  70.,  81.,  92.,  176., 200., 99.,  112.,
      212., 240., 117., 132., 147., 162., 0.,   0.,   49.,  56.,  63.,  70.,
      133., 148., 72.,  80.,  151., 168., 81.,  90.,  99.,  108., 0.,   0.,
      91.,  98.,  105., 112., 223., 238., 120., 128., 253., 270., 135., 144.,
      153., 162., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   128.,  180.,  83.,   113.,  41.,   47.,   53.,   59.,
      160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,  440.,  492.,
      263.,  293.,  106.,  150.,  194.,  238.,  496.,  600.,  334.,  394.,
      776.,  912.,  474.,  550.,  1056., 1224., 614.,  706.,  257.,  295.,
      333.,  371.,  720.,  804.,  403.,  449.,  860.,  960.,  473.,  527.,
      1000., 1116., 543.,  605.,  538.,  646.,  754.,  862.,  1616., 1848.,
      894.,  1018., 1896., 2160., 1034., 1174., 2176., 2472., 1174., 1330.,
      473.,  543.,  613.,  683.,  1280., 1428., 683.,  761.,  1420., 1584.,
      753.,  839.,  1560., 1740., 823.,  917.,  970.,  1142., 1314., 1486.,
      2736., 3096., 1454., 1642., 3016., 3408., 1594., 1798., 3296., 3720.,
      1734., 1954., 689.,  791.,  893.,  995.,  1840., 2052., 963.,  1073.,
      1980., 2208., 1033., 1151., 2120., 2364., 1103., 1229.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   105.,  127.,  0.,    0.,    41.,   47.,   53.,   59.,
      160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,  237.,  259.,
      0.,    0.,    100.,  136.,  172.,  208.,  452.,  540.,  312.,  364.,
      732.,  852.,  452.,  520.,  588.,  656.,  0.,    0.,    203.,  233.,
      263.,  293.,  580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,
      495.,  541.,  0.,    0.,    424.,  508.,  592.,  676.,  1292., 1476.,
      732.,  832.,  1572., 1788., 872.,  988.,  1104., 1220., 0.,    0.,
      365.,  419.,  473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272.,
      613.,  683.,  753.,  823.,  0.,    0.,    689.,  743.,  797.,  851.,
      1696., 1812., 915.,  977.,  1932., 2064., 1033., 1103., 1173., 1243.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   596.,
      868.,   446.,   614.,   932.,   1332.,  614.,   846.,   270.,   310.,
      350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,  1454.,
      1622.,  3332.,  3732.,  2006.,  2238.,  700.,   1036.,  1372.,  1708.,
      3592.,  4392.,  2476.,  2940.,  5800.,  6856.,  3580.,  4172.,  8008.,
      9320.,  4684.,  5404.,  1966.,  2262.,  2558.,  2854.,  5540.,  6196.,
      3110.,  3470.,  6644.,  7428.,  3662.,  4086.,  7748.,  8660.,  4214.,
      4702.,  4092.,  4940.,  5788.,  6636.,  12424., 14248., 6892.,  7868.,
      14632., 16712., 7996.,  9100.,  16840., 19176., 9100.,  10332., 3662.,
      4214.,  4766.,  5318.,  9956.,  11124., 5318.,  5934.,  11060., 12356.,
      5870.,  6550.,  12164., 13588., 6422.,  7166.,  7484.,  8844.,  10204.,
      11564., 21256., 24104., 11308., 12796., 23464., 26568., 12412., 14028.,
      25672., 29032., 13516., 15260., 5358.,  6166.,  6974.,  7782.,  14372.,
      16052., 7526.,  8398.,  15476., 17284., 8078.,  9014.,  16580., 18516.,
      8630.,  9630.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,  260.,  404.,   278.,   382.,  596.,
      868.,   446.,   614.,   782.,  950.,  0.,     0.,     270.,  310.,
      350.,   390.,   1124.,  1268., 902.,  1006.,  2228.,  2500., 1454.,
      1622.,  1790.,  1958.,  0.,    0.,    660.,   932.,   1204., 1476.,
      3256.,  3928.,  2308.,  2708., 5464., 6392.,  3412.,  3940., 4468.,
      4996.,  0.,     0.,     1542., 1774., 2006.,  2238.,  4436., 4964.,
      2558.,  2854.,  5540.,  6196., 3110., 3470.,  3830.,  4190., 0.,
      0.,     3204.,  3860.,  4516., 5172., 9880.,  11320., 5620., 6404.,
      12088., 13784., 6724.,  7636., 8548., 9460.,  0.,     0.,    2814.,
      3238.,  3662.,  4086.,  7748., 8660., 4214.,  4702.,  8852., 9892.,
      4766.,  5318.,  5870.,  6422., 0.,    0.,     5358.,  5782., 6206.,
      6630.,  13220., 14132., 7142., 7630., 15092., 16132., 8078., 8630.,
      9182.,  9734.,  0.,     0.,    0.,    0.,     0.,     0.,    0.,
      0.,     0.,     0.,     0.,    0.,    0.,     0.,     0.,    0.,
      0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,
      31.,  38.,  45.,  52.,  20.,  24.,  28.,  32.,  13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  30.,  36.,  42.,  48.,  54.,  60.,  66.,  72.,
      134., 148., 162., 176., 88.,  96.,  104., 112., 202., 220., 238., 256.,
      122., 132., 142., 152., 270., 292., 314., 336., 156., 168., 180., 192.,
      65.,  70.,  75.,  80.,  85.,  90.,  95.,  100., 183., 194., 205., 216.,
      102., 108., 114., 120., 217., 230., 243., 256., 119., 126., 133., 140.,
      251., 266., 281., 296., 136., 144., 152., 160., 134., 148., 162., 176.,
      190., 204., 218., 232., 406., 436., 466., 496., 224., 240., 256., 272.,
      474., 508., 542., 576., 258., 276., 294., 312., 542., 580., 618., 656.,
      292., 312., 332., 352., 117., 126., 135., 144., 153., 162., 171., 180.,
      319., 338., 357., 376., 170., 180., 190., 200., 353., 374., 395., 416.,
      187., 198., 209., 220., 387., 410., 433., 456., 204., 216., 228., 240.,
      238., 260., 282., 304., 326., 348., 370., 392., 678., 724., 770., 816.,
      360., 384., 408., 432., 746., 796., 846., 896., 394., 420., 446., 472.,
      814., 868., 922., 976., 428., 456., 484., 512., 169., 182., 195., 208.,
      221., 234., 247., 260., 455., 482., 509., 536., 238., 252., 266., 280.,
      489., 518., 547., 576., 255., 270., 285., 300., 523., 554., 585., 616.,
      272., 288., 304., 320.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  21.,  26.,  31.,  36.,  15.,  18.,  21.,  24.,
      27.,  30.,  33.,  36.,  0.,   0.,   0.,   0.,   13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      81.,  86.,  91.,  96.,  51.,  54.,  57.,  60.,  63.,  66.,  69.,  72.,
      0.,   0.,   0.,   0.,   29.,  34.,  39.,  44.,  49.,  54.,  59.,  64.,
      124., 136., 148., 160., 83.,  90.,  97.,  104., 192., 208., 224., 240.,
      117., 126., 135., 144., 153., 162., 171., 180., 0.,   0.,   0.,   0.,
      52.,  56.,  60.,  64.,  68.,  72.,  76.,  80.,  149., 158., 167., 176.,
      85.,  90.,  95.,  100., 183., 194., 205., 216., 102., 108., 114., 120.,
      126., 132., 138., 144., 0.,   0.,   0.,   0.,   107., 118., 129., 140.,
      151., 162., 173., 184., 328., 352., 376., 400., 185., 198., 211., 224.,
      396., 424., 452., 480., 219., 234., 249., 264., 279., 294., 309., 324.,
      0.,   0.,   0.,   0.,   91.,  98.,  105., 112., 119., 126., 133., 140.,
      251., 266., 281., 296., 136., 144., 152., 160., 285., 302., 319., 336.,
      153., 162., 171., 180., 189., 198., 207., 216., 0.,   0.,   0.,   0.,
      175., 182., 189., 196., 203., 210., 217., 224., 431., 446., 461., 476.,
      232., 240., 248., 256., 489., 506., 523., 540., 261., 270., 279., 288.,
      297., 306., 315., 324., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  216.,  268.,  320.,  372.,  143.,  173.,
      203.,  233.,  77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,
      304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,
      644.,  680.,  369.,  391.,  413.,  435.,  840.,  892.,  944.,  996.,
      503.,  533.,  563.,  593.,  178.,  222.,  266.,  310.,  354.,  398.,
      442.,  486.,  912.,  1016., 1120., 1224., 622.,  682.,  742.,  802.,
      1448., 1584., 1720., 1856., 890.,  966.,  1042., 1118., 1984., 2152.,
      2320., 2488., 1158., 1250., 1342., 1434., 485.,  523.,  561.,  599.,
      637.,  675.,  713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,
      863.,  909.,  1644., 1744., 1844., 1944., 905.,  959.,  1013., 1067.,
      1912., 2028., 2144., 2260., 1039., 1101., 1163., 1225., 994.,  1102.,
      1210., 1318., 1426., 1534., 1642., 1750., 3056., 3288., 3520., 3752.,
      1694., 1818., 1942., 2066., 3592., 3856., 4120., 4384., 1962., 2102.,
      2242., 2382., 4128., 4424., 4720., 5016., 2230., 2386., 2542., 2698.,
      893.,  963.,  1033., 1103., 1173., 1243., 1313., 1383., 2448., 2596.,
      2744., 2892., 1307., 1385., 1463., 1541., 2716., 2880., 3044., 3208.,
      1441., 1527., 1613., 1699., 2984., 3164., 3344., 3524., 1575., 1669.,
      1763., 1857., 1810., 1982., 2154., 2326., 2498., 2670., 2842., 3014.,
      5200., 5560., 5920., 6280., 2766., 2954., 3142., 3330., 5736., 6128.,
      6520., 6912., 3034., 3238., 3442., 3646., 6272., 6696., 7120., 7544.,
      3302., 3522., 3742., 3962., 1301., 1403., 1505., 1607., 1709., 1811.,
      1913., 2015., 3520., 3732., 3944., 4156., 1843., 1953., 2063., 2173.,
      3788., 4016., 4244., 4472., 1977., 2095., 2213., 2331., 4056., 4300.,
      4544., 4788., 2111., 2237., 2363., 2489.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  193.,  215.,  237.,  259.,  0.,    0.,
      0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,
      304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,
      644.,  680.,  369.,  391.,  413.,  435.,  457.,  479.,  501.,  523.,
      0.,    0.,    0.,    0.,    172.,  208.,  244.,  280.,  316.,  352.,
      388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,  688.,  740.,
      1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056., 1124., 1192.,
      1260., 1328., 0.,    0.,    0.,    0.,    383.,  413.,  443.,  473.,
      503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312., 637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      955.,  1001., 1047., 1093., 0.,    0.,    0.,    0.,    784.,  868.,
      952.,  1036., 1120., 1204., 1288., 1372., 2444., 2628., 2812., 2996.,
      1388., 1488., 1588., 1688., 2980., 3196., 3412., 3628., 1656., 1772.,
      1888., 2004., 2120., 2236., 2352., 2468., 0.,    0.,    0.,    0.,
      689.,  743.,  797.,  851.,  905.,  959.,  1013., 1067., 1912., 2028.,
      2144., 2260., 1039., 1101., 1163., 1225., 2180., 2312., 2444., 2576.,
      1173., 1243., 1313., 1383., 1453., 1523., 1593., 1663., 0.,    0.,
      0.,    0.,    1337., 1391., 1445., 1499., 1553., 1607., 1661., 1715.,
      3304., 3420., 3536., 3652., 1783., 1845., 1907., 1969., 3764., 3896.,
      4028., 4160., 2013., 2083., 2153., 2223., 2293., 2363., 2433., 2503.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  1604.,  2004.,  2404.,
      2804.,  1078.,  1310.,  1542.,  1774.,  510.,   550.,   590.,   630.,
      670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,  1734.,
      1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,  2966.,
      3134.,  3302.,  6404.,  6804.,  7204.,  7604.,  3862.,  4094.,  4326.,
      4558.,  1180.,  1516.,  1852.,  2188.,  2524.,  2860.,  3196.,  3532.,
      6664.,  7464.,  8264.,  9064.,  4652.,  5116.,  5580.,  6044.,  10920.,
      11976., 13032., 14088., 6780.,  7372.,  7964.,  8556.,  15176., 16488.,
      17800., 19112., 8908.,  9628.,  10348., 11068., 3742.,  4038.,  4334.,
      4630.,  4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628.,
      5990.,  6350.,  6710.,  7070.,  12788., 13572., 14356., 15140., 7054.,
      7478.,  7902.,  8326.,  14916., 15828., 16740., 17652., 8118.,  8606.,
      9094.,  9582.,  7644.,  8492.,  9340.,  10188., 11036., 11884., 12732.,
      13580., 23688., 25512., 27336., 29160., 13164., 14140., 15116., 16092.,
      27944., 30024., 32104., 34184., 15292., 16396., 17500., 18604., 32200.,
      34536., 36872., 39208., 17420., 18652., 19884., 21116., 6974.,  7526.,
      8078.,  8630.,  9182.,  9734.,  10286., 10838., 19172., 20340., 21508.,
      22676., 10246., 10862., 11478., 12094., 21300., 22596., 23892., 25188.,
      11310., 11990., 12670., 13350., 23428., 24852., 26276., 27700., 12374.,
      13118., 13862., 14606., 14108., 15468., 16828., 18188., 19548., 20908.,
      22268., 23628., 40712., 43560., 46408., 49256., 21676., 23164., 24652.,
      26140., 44968., 48072., 51176., 54280., 23804., 25420., 27036., 28652.,
      49224., 52584., 55944., 59304., 25932., 27676., 29420., 31164., 10206.,
      11014., 11822., 12630., 13438., 14246., 15054., 15862., 27684., 29364.,
      31044., 32724., 14502., 15374., 16246., 17118., 29812., 31620., 33428.,
      35236., 15566., 16502., 17438., 18374., 31940., 33876., 35812., 37748.,
      16630., 17630., 18630., 19630.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  1454.,  1622.,  1790.,
      1958.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,   630.,
      670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,  1734.,
      1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,  2966.,
      3134.,  3302.,  3470.,  3638.,  3806.,  3974.,  0.,     0.,     0.,
      0.,     1140.,  1412.,  1684.,  1956.,  2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,  7416.,  8088.,  4356.,  4756.,  5156.,  5556.,  10328.,
      11256., 12184., 13112., 6484.,  7012.,  7540.,  8068.,  8596.,  9124.,
      9652.,  10180., 0.,     0.,     0.,     0.,     2934.,  3166.,  3398.,
      3630.,  3862.,  4094.,  4326.,  4558.,  8532.,  9060.,  9588.,  10116.,
      4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,
      6350.,  6710.,  7070.,  7430.,  7790.,  8150.,  8510.,  0.,     0.,
      0.,     0.,     5988.,  6644.,  7300.,  7956.,  8612.,  9268.,  9924.,
      10580., 18840., 20280., 21720., 23160., 10740., 11524., 12308., 13092.,
      23096., 24792., 26488., 28184., 12868., 13780., 14692., 15604., 16516.,
      17428., 18340., 19252., 0.,     0.,     0.,     0.,     5358.,  5782.,
      6206.,  6630.,  7054.,  7478.,  7902.,  8326.,  14916., 15828., 16740.,
      17652., 8118.,  8606.,  9094.,  9582.,  17044., 18084., 19124., 20164.,
      9182.,  9734.,  10286., 10838., 11390., 11942., 12494., 13046., 0.,
      0.,     0.,     0.,     10446., 10870., 11294., 11718., 12142., 12566.,
      12990., 13414., 25860., 26772., 27684., 28596., 13974., 14462., 14950.,
      15438., 29524., 30564., 31604., 32644., 15806., 16358., 16910., 17462.,
      18014., 18566., 19118., 19670., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   14.,  10.,  24.,  15.,  16.,  40.,  26.,  60.,  36.,  20.,
      44.,  25.,  54.,  30.,  46.,  100., 56.,  120., 66.,  35.,  74.,
      40.,  84.,  45.,  50.,  104., 55.,  114., 60.,  106., 220., 116.,
      240., 126., 65.,  134., 70.,  144., 75.,  136., 280., 146., 300.,
      156., 80.,  164., 85.,  174., 90.,  95.,  194., 100., 204., 105.,
      196., 400., 206., 420., 216., 110., 224., 115., 234., 120., 226.,
      460., 236., 480., 246., 125., 254., 130., 264., 135.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,  6.,  4.,  5.,  14.,  10.,  12., 10.,  14.,  36.,
      24., 30., 12.,  15., 34., 20., 24., 21.,  24.,  55., 32.,  36.,  5.,
      10., 21., 12.,  18., 20., 25., 54., 30.,  36.,  42., 54.,  116., 64.,
      78., 28., 35.,  74., 40., 48., 49., 56.,  119., 64., 72.,  9.,   18.,
      37., 20., 30.,  36., 45., 94., 50., 60.,  74.,  94., 196., 104., 126.,
      44., 55., 114., 60., 72., 77., 88., 183., 96.,  108.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,   88.,   67.,   164.,  105.,  100.,  260.,  176.,  412.,  252.,
      143.,  316.,  181.,  392.,  219.,  328.,  716.,  404.,  868.,  480.,
      257.,  544.,  295.,  620.,  333.,  371.,  772.,  409.,  848.,  447.,
      784.,  1628., 860.,  1780., 936.,  485.,  1000., 523.,  1076., 561.,
      1012., 2084., 1088., 2236., 1164., 599.,  1228., 637.,  1304., 675.,
      713.,  1456., 751.,  1532., 789.,  1468., 2996., 1544., 3148., 1620.,
      827.,  1684., 865.,  1760., 903.,  1696., 3452., 1772., 3604., 1848.,
      941.,  1912., 979.,  1988., 1017.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  23.,  29.,   88.,   67.,  81.,  58.,
      86.,  232., 162., 206., 83.,  105., 240.,  143.,  173., 149., 171.,
      396., 233., 263., 29.,  67.,  140., 81.,   127.,  143., 181., 392.,
      219., 265., 298., 390., 840., 466., 574.,  203.,  257., 544., 295.,
      357., 365., 419., 892., 481., 543., 53.,   123.,  252., 137., 215.,
      263., 333., 696., 371., 449., 538., 694.,  1448., 770., 942., 323.,
      409., 848., 447., 541., 581., 667., 1388., 729.,  823.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,   612.,   486.,   1204.,  782.,   692.,   1848.,  1284.,  3032.,
      1876.,  1078.,  2388.,  1374.,  2980.,  1670.,  2468.,  5400.,  3060.,
      6584.,  3652.,  1966.,  4164.,  2262.,  4756.,  2558.,  2854.,  5940.,
      3150.,  6532.,  3446.,  6020.,  12504., 6612.,  13688., 7204.,  3742.,
      7716.,  4038.,  8308.,  4334.,  7796.,  16056., 8388.,  17240., 8980.,
      4630.,  9492.,  4926.,  10084., 5222.,  5518.,  11268., 5814.,  11860.,
      6110.,  11348., 23160., 11940., 24344., 12532., 6406.,  13044., 6702.,
      13636., 6998.,  13124., 26712., 13716., 27896., 14308., 7294.,  14820.,
      7590.,  15412., 7886.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,   174.,  278.,  150.,  190.,  612.,  486.,  590.,
      380.,  588.,  1640.,  1180., 1516., 614.,  782.,  1796., 1078., 1310.,
      1118., 1286., 2996.,  1774., 2006., 190.,  486.,  1012., 590.,  950.,
      1078., 1374., 2980.,  1670., 2030., 2236., 2956., 6376., 3548., 4396.,
      1542., 1966., 4164.,  2262., 2750., 2814., 3238., 6900., 3726., 4214.,
      350.,  902.,  1844.,  1006., 1622., 2006., 2558., 5348., 2854., 3470.,
      4092., 5324., 11112., 5916., 7276., 2470., 3150., 6532., 3446., 4190.,
      4510., 5190., 10804., 5678., 6422.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9.,   10.,  25.,  28.,  18.,  20.,  43.,  48.,  27.,  30.,  27.,  32.,
      68.,  80.,  45.,  52.,  104., 120., 63.,  72.,  36.,  40.,  79.,  88.,
      45.,  50.,  97.,  108., 54.,  60.,  81.,  92.,  176., 200., 99.,  112.,
      212., 240., 117., 132., 63.,  70.,  133., 148., 72.,  80.,  151., 168.,
      81.,  90.,  90.,  100., 187., 208., 99.,  110., 205., 228., 108., 120.,
      189., 212., 392., 440., 207., 232., 428., 480., 225., 252., 117., 130.,
      241., 268., 126., 140., 259., 288., 135., 150., 243., 272., 500., 560.,
      261., 292., 536., 600., 279., 312., 144., 160., 295., 328., 153., 170.,
      313., 348., 162., 180., 171., 190., 349., 388., 180., 200., 367., 408.,
      189., 210., 351., 392., 716., 800., 369., 412., 752., 840., 387., 432.,
      198., 220., 403., 448., 207., 230., 421., 468., 216., 240., 405., 452.,
      824., 920., 423., 472., 860., 960., 441., 492., 225., 250., 457., 508.,
      234., 260., 475., 528., 243., 270.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   10.,  12.,  7.,   8.,
      9.,   10.,  25.,  28.,  18.,  20.,  22.,  24.,  16.,  20.,  24.,  28.,
      62.,  72.,  42.,  48.,  54.,  60.,  21.,  24.,  27.,  30.,  61.,  68.,
      36.,  40.,  44.,  48.,  39.,  42.,  45.,  48.,  103., 110., 60.,  64.,
      68.,  72.,  5.,   10.,  15.,  20.,  31.,  42.,  18.,  24.,  30.,  36.,
      35.,  40.,  45.,  50.,  97.,  108., 54.,  60.,  66.,  72.,  72.,  84.,
      96.,  108., 206., 232., 114., 128., 142., 156., 49.,  56.,  63.,  70.,
      133., 148., 72.,  80.,  88.,  96.,  91.,  98.,  105., 112., 223., 238.,
      120., 128., 136., 144., 9.,   18.,  27.,  36.,  55.,  74.,  30.,  40.,
      50.,  60.,  63.,  72.,  81.,  90.,  169., 188., 90.,  100., 110., 120.,
      128., 148., 168., 188., 350., 392., 186., 208., 230., 252., 77.,  88.,
      99.,  110., 205., 228., 108., 120., 132., 144., 143., 154., 165., 176.,
      343., 366., 180., 192., 204., 216.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53.,   59.,   160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,
      172.,  208.,  452.,  540.,  312.,  364.,  732.,  852.,  452.,  520.,
      263.,  293.,  580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,
      592.,  676.,  1292., 1476., 732.,  832.,  1572., 1788., 872.,  988.,
      473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272., 613.,  683.,
      683.,  761.,  1420., 1584., 753.,  839.,  1560., 1740., 823.,  917.,
      1432., 1612., 2972., 3348., 1572., 1768., 3252., 3660., 1712., 1924.,
      893.,  995.,  1840., 2052., 963.,  1073., 1980., 2208., 1033., 1151.,
      1852., 2080., 3812., 4284., 1992., 2236., 4092., 4596., 2132., 2392.,
      1103., 1229., 2260., 2520., 1173., 1307., 2400., 2676., 1243., 1385.,
      1313., 1463., 2680., 2988., 1383., 1541., 2820., 3144., 1453., 1619.,
      2692., 3016., 5492., 6156., 2832., 3172., 5772., 6468., 2972., 3328.,
      1523., 1697., 3100., 3456., 1593., 1775., 3240., 3612., 1663., 1853.,
      3112., 3484., 6332., 7092., 3252., 3640., 6612., 7404., 3392., 3796.,
      1733., 1931., 3520., 3924., 1803., 2009., 3660., 4080., 1873., 2087.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   67.,   81.,
      41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,  151.,  165.,
      94.,   122.,  150.,  178.,  408.,  480.,  290.,  334.,  378.,  422.,
      149.,  171.,  193.,  215.,  440.,  492.,  263.,  293.,  323.,  353.,
      281.,  303.,  325.,  347.,  752.,  804.,  443.,  473.,  503.,  533.,
      29.,   67.,   105.,  143.,  216.,  300.,  127.,  173.,  219.,  265.,
      257.,  295.,  333.,  371.,  720.,  804.,  403.,  449.,  495.,  541.,
      526.,  618.,  710.,  802.,  1528., 1728., 850.,  958.,  1066., 1174.,
      365.,  419.,  473.,  527.,  1000., 1116., 543.,  605.,  667.,  729.,
      689.,  743.,  797.,  851.,  1696., 1812., 915.,  977.,  1039., 1101.,
      53.,   123.,  193.,  263.,  392.,  540.,  215.,  293.,  371.,  449.,
      473.,  543.,  613.,  683.,  1280., 1428., 683.,  761.,  839.,  917.,
      958.,  1114., 1270., 1426., 2648., 2976., 1410., 1582., 1754., 1926.,
      581.,  667.,  753.,  839.,  1560., 1740., 823.,  917.,  1011., 1105.,
      1097., 1183., 1269., 1355., 2640., 2820., 1387., 1481., 1575., 1669.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,  1454.,
      1622.,  1204.,  1476.,  3256.,  3928.,  2308.,  2708.,  5464.,  6392.,
      3412.,  3940.,  2006.,  2238.,  4436.,  4964.,  2558.,  2854.,  5540.,
      6196.,  3110.,  3470.,  4516.,  5172.,  9880.,  11320., 5620.,  6404.,
      12088., 13784., 6724.,  7636.,  3662.,  4086.,  7748.,  8660.,  4214.,
      4702.,  8852.,  9892.,  4766.,  5318.,  5318.,  5934.,  11060., 12356.,
      5870.,  6550.,  12164., 13588., 6422.,  7166.,  11140., 12564., 23128.,
      26104., 12244., 13796., 25336., 28568., 13348., 15028., 6974.,  7782.,
      14372., 16052., 7526.,  8398.,  15476., 17284., 8078.,  9014.,  14452.,
      16260., 29752., 33496., 15556., 17492., 31960., 35960., 16660., 18724.,
      8630.,  9630.,  17684., 19748., 9182.,  10246., 18788., 20980., 9734.,
      10862., 10286., 11478., 20996., 23444., 10838., 12094., 22100., 24676.,
      11390., 12710., 21076., 23652., 43000., 48280., 22180., 24884., 45208.,
      50744., 23284., 26116., 11942., 13326., 24308., 27140., 12494., 13942.,
      25412., 28372., 13046., 14558., 24388., 27348., 49624., 55672., 25492.,
      28580., 51832., 58136., 26596., 29812., 13598., 15174., 27620., 30836.,
      14150., 15790., 28724., 32068., 14702., 16406.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   486.,
      590.,   270.,   310.,   350.,   390.,   1124.,  1268.,  902.,   1006.,
      1110.,  1214.,  620.,   828.,   1036.,  1244.,  2920.,  3464.,  2140.,
      2476.,  2812.,  3148.,  1118.,  1286.,  1454.,  1622.,  3332.,  3732.,
      2006.,  2238.,  2470.,  2702.,  2126.,  2294.,  2462.,  2630.,  5732.,
      6132.,  3398.,  3630.,  3862.,  4094.,  190.,   486.,   782.,   1078.,
      1604.,  2260.,  950.,   1310.,  1670.,  2030.,  1966.,  2262.,  2558.,
      2854.,  5540.,  6196.,  3110.,  3470.,  3830.,  4190.,  4012.,  4732.,
      5452.,  6172.,  11752., 13320., 6556.,  7404.,  8252.,  9100.,  2814.,
      3238.,  3662.,  4086.,  7748.,  8660.,  4214.,  4702.,  5190.,  5678.,
      5358.,  5782.,  6206.,  6630.,  13220., 14132., 7142.,  7630.,  8118.,
      8606.,  350.,   902.,   1454.,  2006.,  2948.,  4116.,  1622.,  2238.,
      2854.,  3470.,  3662.,  4214.,  4766.,  5318.,  9956.,  11124., 5318.,
      5934.,  6550.,  7166.,  7404.,  8636.,  9868.,  11100., 20584., 23176.,
      10972., 12332., 13692., 15052., 4510.,  5190.,  5870.,  6550.,  12164.,
      13588., 6422.,  7166.,  7910.,  8654.,  8590.,  9270.,  9950.,  10630.,
      20708., 22132., 10886., 11630., 12374., 13118.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,  18.,  19.,   20.,   47.,   50.,   53.,   56.,   34.,  36.,
      38.,  40.,  81.,   86.,   91.,   96.,   51.,   54.,   57.,  60.,
      49.,  54.,  59.,   64.,   124.,  136.,  148.,  160.,  83.,  90.,
      97.,  104., 192.,  208.,  224.,  240.,  117.,  126.,  135., 144.,
      68.,  72.,  76.,   80.,   149.,  158.,  167.,  176.,  85.,  90.,
      95.,  100., 183.,  194.,  205.,  216.,  102.,  108.,  114., 120.,
      151., 162., 173.,  184.,  328.,  352.,  376.,  400.,  185., 198.,
      211., 224., 396.,  424.,  452.,  480.,  219.,  234.,  249., 264.,
      119., 126., 133.,  140.,  251.,  266.,  281.,  296.,  136., 144.,
      152., 160., 285.,  302.,  319.,  336.,  153.,  162.,  171., 180.,
      170., 180., 190.,  200.,  353.,  374.,  395.,  416.,  187., 198.,
      209., 220., 387.,  410.,  433.,  456.,  204.,  216.,  228., 240.,
      355., 378., 401.,  424.,  736.,  784.,  832.,  880.,  389., 414.,
      439., 464., 804.,  856.,  908.,  960.,  423.,  450.,  477., 504.,
      221., 234., 247.,  260.,  455.,  482.,  509.,  536.,  238., 252.,
      266., 280., 489.,  518.,  547.,  576.,  255.,  270.,  285., 300.,
      457., 486., 515.,  544.,  940.,  1000., 1060., 1120., 491., 522.,
      553., 584., 1008., 1072., 1136., 1200., 525.,  558.,  591., 624.,
      272., 288., 304.,  320.,  557.,  590.,  623.,  656.,  289., 306.,
      323., 340., 591.,  626.,  661.,  696.,  306.,  324.,  342., 360.,
      323., 342., 361.,  380.,  659.,  698.,  737.,  776.,  340., 360.,
      380., 400., 693.,  734.,  775.,  816.,  357.,  378.,  399., 420.,
      661., 702., 743.,  784.,  1348., 1432., 1516., 1600., 695., 738.,
      781., 824., 1416., 1504., 1592., 1680., 729.,  774.,  819., 864.,
      374., 396., 418.,  440.,  761.,  806.,  851.,  896.,  391., 414.,
      437., 460., 795.,  842.,  889.,  936.,  408.,  432.,  456., 480.,
      763., 810., 857.,  904.,  1552., 1648., 1744., 1840., 797., 846.,
      895., 944., 1620., 1720., 1820., 1920., 831.,  882.,  933., 984.,
      425., 450., 475.,  500.,  863.,  914.,  965.,  1016., 442., 468.,
      494., 520., 897.,  950.,  1003., 1056., 459.,  486.,  513., 540.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      42.,  44.,  46.,  48.,  28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,
      114., 124., 134., 144., 78.,  84.,  90.,  96.,  102., 108., 114., 120.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  75.,  78.,  81.,  84.,
      87.,  90.,  93.,  96.,  199., 206., 213., 220., 116., 120., 124., 128.,
      132., 136., 140., 144., 5.,   10.,  15.,  20.,  25.,  30.,  35.,  40.,
      51.,  62.,  73.,  84.,  30.,  36.,  42.,  48.,  54.,  60.,  66.,  72.,
      65.,  70.,  75.,  80.,  85.,  90.,  95.,  100., 183., 194., 205., 216.,
      102., 108., 114., 120., 126., 132., 138., 144., 132., 144., 156., 168.,
      180., 192., 204., 216., 386., 412., 438., 464., 214., 228., 242., 256.,
      270., 284., 298., 312., 91.,  98.,  105., 112., 119., 126., 133., 140.,
      251., 266., 281., 296., 136., 144., 152., 160., 168., 176., 184., 192.,
      175., 182., 189., 196., 203., 210., 217., 224., 431., 446., 461., 476.,
      232., 240., 248., 256., 264., 272., 280., 288., 9.,   18.,  27.,  36.,
      45.,  54.,  63.,  72.,  91.,  110., 129., 148., 50.,  60.,  70.,  80.,
      90.,  100., 110., 120., 117., 126., 135., 144., 153., 162., 171., 180.,
      319., 338., 357., 376., 170., 180., 190., 200., 210., 220., 230., 240.,
      236., 256., 276., 296., 316., 336., 356., 376., 658., 700., 742., 784.,
      350., 372., 394., 416., 438., 460., 482., 504., 143., 154., 165., 176.,
      187., 198., 209., 220., 387., 410., 433., 456., 204., 216., 228., 240.,
      252., 264., 276., 288., 275., 286., 297., 308., 319., 330., 341., 352.,
      663., 686., 709., 732., 348., 360., 372., 384., 396., 408., 420., 432.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      101.,   107.,   113.,   119.,   304.,   324.,   344.,   364.,   235.,
      249.,   263.,   277.,   572.,   608.,   644.,   680.,   369.,   391.,
      413.,   435.,   316.,   352.,   388.,   424.,   836.,   924.,   1012.,
      1100.,  584.,   636.,   688.,   740.,   1372.,  1492.,  1612.,  1732.,
      852.,   920.,   988.,   1056.,  503.,   533.,   563.,   593.,   1108.,
      1176.,  1244.,  1312.,  637.,   675.,   713.,   751.,   1376.,  1460.,
      1544.,  1628.,  771.,   817.,   863.,   909.,   1120.,  1204.,  1288.,
      1372.,  2444.,  2628.,  2812.,  2996.,  1388.,  1488.,  1588.,  1688.,
      2980.,  3196.,  3412.,  3628.,  1656.,  1772.,  1888.,  2004.,  905.,
      959.,   1013.,  1067.,  1912.,  2028.,  2144.,  2260.,  1039.,  1101.,
      1163.,  1225.,  2180.,  2312.,  2444.,  2576.,  1173.,  1243.,  1313.,
      1383.,  1307.,  1385.,  1463.,  1541.,  2716.,  2880.,  3044.,  3208.,
      1441.,  1527.,  1613.,  1699.,  2984.,  3164.,  3344.,  3524.,  1575.,
      1669.,  1763.,  1857.,  2728.,  2908.,  3088.,  3268.,  5660.,  6036.,
      6412.,  6788.,  2996.,  3192.,  3388.,  3584.,  6196.,  6604.,  7012.,
      7420.,  3264.,  3476.,  3688.,  3900.,  1709.,  1811.,  1913.,  2015.,
      3520.,  3732.,  3944.,  4156.,  1843.,  1953.,  2063.,  2173.,  3788.,
      4016.,  4244.,  4472.,  1977.,  2095.,  2213.,  2331.,  3532.,  3760.,
      3988.,  4216.,  7268.,  7740.,  8212.,  8684.,  3800.,  4044.,  4288.,
      4532.,  7804.,  8308.,  8812.,  9316.,  4068.,  4328.,  4588.,  4848.,
      2111.,  2237.,  2363.,  2489.,  4324.,  4584.,  4844.,  5104.,  2245.,
      2379.,  2513.,  2647.,  4592.,  4868.,  5144.,  5420.,  2379.,  2521.,
      2663.,  2805.,  2513.,  2663.,  2813.,  2963.,  5128.,  5436.,  5744.,
      6052.,  2647.,  2805.,  2963.,  3121.,  5396.,  5720.,  6044.,  6368.,
      2781.,  2947.,  3113.,  3279.,  5140.,  5464.,  5788.,  6112.,  10484.,
      11148., 11812., 12476., 5408.,  5748.,  6088.,  6428.,  11020., 11716.,
      12412., 13108., 5676.,  6032.,  6388.,  6744.,  2915.,  3089.,  3263.,
      3437.,  5932.,  6288.,  6644.,  7000.,  3049.,  3231.,  3413.,  3595.,
      6200.,  6572.,  6944.,  7316.,  3183.,  3373.,  3563.,  3753.,  5944.,
      6316.,  6688.,  7060.,  12092., 12852., 13612., 14372., 6212.,  6600.,
      6988.,  7376.,  12628., 13420., 14212., 15004., 6480.,  6884.,  7288.,
      7692.,  3317.,  3515.,  3713.,  3911.,  6736.,  7140.,  7544.,  7948.,
      3451.,  3657.,  3863.,  4069.,  7004.,  7424.,  7844.,  8264.,  3585.,
      3799.,  4013.,  4227.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  123.,  137.,  151.,  165.,
      77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,  304.,  324.,
      344.,  364.,  235.,  249.,  263.,  277.,  291.,  305.,  319.,  333.,
      166.,  194.,  222.,  250.,  278.,  306.,  334.,  362.,  760.,  832.,
      904.,  976.,  546.,  590.,  634.,  678.,  722.,  766.,  810.,  854.,
      281.,  303.,  325.,  347.,  369.,  391.,  413.,  435.,  840.,  892.,
      944.,  996.,  503.,  533.,  563.,  593.,  623.,  653.,  683.,  713.,
      545.,  567.,  589.,  611.,  633.,  655.,  677.,  699.,  1464., 1516.,
      1568., 1620., 863.,  893.,  923.,  953.,  983.,  1013., 1043., 1073.,
      29.,   67.,   105.,  143.,  181.,  219.,  257.,  295.,  368.,  452.,
      536.,  620.,  219.,  265.,  311.,  357.,  403.,  449.,  495.,  541.,
      485.,  523.,  561.,  599.,  637.,  675.,  713.,  751.,  1376., 1460.,
      1544., 1628., 771.,  817.,  863.,  909.,  955.,  1001., 1047., 1093.,
      982.,  1074., 1166., 1258., 1350., 1442., 1534., 1626., 2904., 3104.,
      3304., 3504., 1618., 1726., 1834., 1942., 2050., 2158., 2266., 2374.,
      689.,  743.,  797.,  851.,  905.,  959.,  1013., 1067., 1912., 2028.,
      2144., 2260., 1039., 1101., 1163., 1225., 1287., 1349., 1411., 1473.,
      1337., 1391., 1445., 1499., 1553., 1607., 1661., 1715., 3304., 3420.,
      3536., 3652., 1783., 1845., 1907., 1969., 2031., 2093., 2155., 2217.,
      53.,   123.,  193.,  263.,  333.,  403.,  473.,  543.,  672.,  820.,
      968.,  1116., 371.,  449.,  527.,  605.,  683.,  761.,  839.,  917.,
      893.,  963.,  1033., 1103., 1173., 1243., 1313., 1383., 2448., 2596.,
      2744., 2892., 1307., 1385., 1463., 1541., 1619., 1697., 1775., 1853.,
      1798., 1954., 2110., 2266., 2422., 2578., 2734., 2890., 5048., 5376.,
      5704., 6032., 2690., 2862., 3034., 3206., 3378., 3550., 3722., 3894.,
      1097., 1183., 1269., 1355., 1441., 1527., 1613., 1699., 2984., 3164.,
      3344., 3524., 1575., 1669., 1763., 1857., 1951., 2045., 2139., 2233.,
      2129., 2215., 2301., 2387., 2473., 2559., 2645., 2731., 5144., 5324.,
      5504., 5684., 2703., 2797., 2891., 2985., 3079., 3173., 3267., 3361.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      670.,   710.,    750.,    790.,    2148.,  2292.,  2436.,  2580.,
      1734.,  1838.,   1942.,   2046.,   4276.,  4548.,  4820.,  5092.,
      2798.,  2966.,   3134.,   3302.,   2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,   7416.,   8088.,   4356.,  4756.,  5156.,  5556.,
      10328., 11256.,  12184.,  13112.,  6484.,  7012.,  7540.,  8068.,
      3862.,  4094.,   4326.,   4558.,   8532.,  9060.,  9588.,  10116.,
      4926.,  5222.,   5518.,   5814.,   10660., 11316., 11972., 12628.,
      5990.,  6350.,   6710.,   7070.,   8612.,  9268.,  9924.,  10580.,
      18840., 20280.,  21720.,  23160.,  10740., 11524., 12308., 13092.,
      23096., 24792.,  26488.,  28184.,  12868., 13780., 14692., 15604.,
      7054.,  7478.,   7902.,   8326.,   14916., 15828., 16740., 17652.,
      8118.,  8606.,   9094.,   9582.,   17044., 18084., 19124., 20164.,
      9182.,  9734.,   10286.,  10838.,  10246., 10862., 11478., 12094.,
      21300., 22596.,  23892.,  25188.,  11310., 11990., 12670., 13350.,
      23428., 24852.,  26276.,  27700.,  12374., 13118., 13862., 14606.,
      21380., 22804.,  24228.,  25652.,  44376., 47352., 50328., 53304.,
      23508., 25060.,  26612.,  28164.,  48632., 51864., 55096., 58328.,
      25636., 27316.,  28996.,  30676.,  13438., 14246., 15054., 15862.,
      27684., 29364.,  31044.,  32724.,  14502., 15374., 16246., 17118.,
      29812., 31620.,  33428.,  35236.,  15566., 16502., 17438., 18374.,
      27764., 29572.,  31380.,  33188.,  57144., 60888., 64632., 68376.,
      29892., 31828.,  33764.,  35700.,  61400., 65400., 69400., 73400.,
      32020., 34084.,  36148.,  38212.,  16630., 17630., 18630., 19630.,
      34068., 36132.,  38196.,  40260.,  17694., 18758., 19822., 20886.,
      36196., 38388.,  40580.,  42772.,  18758., 19886., 21014., 22142.,
      19822., 21014.,  22206.,  23398.,  40452., 42900., 45348., 47796.,
      20886., 22142.,  23398.,  24654.,  42580., 45156., 47732., 50308.,
      21950., 23270.,  24590.,  25910.,  40532., 43108., 45684., 48260.,
      82680., 87960.,  93240.,  98520.,  42660., 45364., 48068., 50772.,
      86936., 92472.,  98008.,  103544., 44788., 47620., 50452., 53284.,
      23014., 24398.,  25782.,  27166.,  46836., 49668., 52500., 55332.,
      24078., 25526.,  26974.,  28422.,  48964., 51924., 54884., 57844.,
      25142., 26654.,  28166.,  29678.,  46916., 49876., 52836., 55796.,
      95448., 101496., 107544., 113592., 49044., 52132., 55220., 58308.,
      99704., 106008., 112312., 118616., 51172., 54388., 57604., 60820.,
      26206., 27782.,  29358.,  30934.,  53220., 56436., 59652., 62868.,
      27270., 28910.,  30550.,  32190.,  55348., 58692., 62036., 65380.,
      28334., 30038.,  31742.,  33446.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   902.,   1006.,
      1110.,  1214.,  510.,   550.,   590.,   630.,   670.,   710.,   750.,
      790.,   2148.,  2292.,  2436.,  2580.,  1734.,  1838.,  1942.,  2046.,
      2150.,  2254.,  2358.,  2462.,  1100.,  1308.,  1516.,  1724.,  1932.,
      2140.,  2348.,  2556.,  5480.,  6024.,  6568.,  7112.,  4060.,  4396.,
      4732.,  5068.,  5404.,  5740.,  6076.,  6412.,  2126.,  2294.,  2462.,
      2630.,  2798.,  2966.,  3134.,  3302.,  6404.,  6804.,  7204.,  7604.,
      3862.,  4094.,  4326.,  4558.,  4790.,  5022.,  5254.,  5486.,  4142.,
      4310.,  4478.,  4646.,  4814.,  4982.,  5150.,  5318.,  11204., 11604.,
      12004., 12404., 6646.,  6878.,  7110.,  7342.,  7574.,  7806.,  8038.,
      8270.,  190.,   486.,   782.,   1078.,  1374.,  1670.,  1966.,  2262.,
      2788.,  3444.,  4100.,  4756.,  1670.,  2030.,  2390.,  2750.,  3110.,
      3470.,  3830.,  4190.,  3742.,  4038.,  4334.,  4630.,  4926.,  5222.,
      5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,
      7070.,  7430.,  7790.,  8150.,  8510.,  7564.,  8284.,  9004.,  9724.,
      10444., 11164., 11884., 12604., 22504., 24072., 25640., 27208., 12572.,
      13420., 14268., 15116., 15964., 16812., 17660., 18508., 5358.,  5782.,
      6206.,  6630.,  7054.,  7478.,  7902.,  8326.,  14916., 15828., 16740.,
      17652., 8118.,  8606.,  9094.,  9582.,  10070., 10558., 11046., 11534.,
      10446., 10870., 11294., 11718., 12142., 12566., 12990., 13414., 25860.,
      26772., 27684., 28596., 13974., 14462., 14950., 15438., 15926., 16414.,
      16902., 17390., 350.,   902.,   1454.,  2006.,  2558.,  3110.,  3662.,
      4214.,  5156.,  6324.,  7492.,  8660.,  2854.,  3470.,  4086.,  4702.,
      5318.,  5934.,  6550.,  7166.,  6974.,  7526.,  8078.,  8630.,  9182.,
      9734.,  10286., 10838., 19172., 20340., 21508., 22676., 10246., 10862.,
      11478., 12094., 12710., 13326., 13942., 14558., 14028., 15260., 16492.,
      17724., 18956., 20188., 21420., 22652., 39528., 42120., 44712., 47304.,
      21084., 22444., 23804., 25164., 26524., 27884., 29244., 30604., 8590.,
      9270.,  9950.,  10630., 11310., 11990., 12670., 13350., 23428., 24852.,
      26276., 27700., 12374., 13118., 13862., 14606., 15350., 16094., 16838.,
      17582., 16750., 17430., 18110., 18790., 19470., 20150., 20830., 21510.,
      40516., 41940., 43364., 44788., 21302., 22046., 22790., 23534., 24278.,
      25022., 25766., 26510.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4.,   5.,   14.,  10.,  24.,  15.,  11.,  16.,  40.,  26.,  60.,  36.,
      16.,  20.,  44.,  25.,  54.,  30.,  35.,  46.,  100., 56.,  120., 66.,
      28.,  35.,  74.,  40.,  84.,  45.,  40.,  50.,  104., 55.,  114., 60.,
      83.,  106., 220., 116., 240., 126., 52.,  65.,  134., 70.,  144., 75.,
      107., 136., 280., 146., 300., 156., 64.,  80.,  164., 85.,  174., 90.,
      76.,  95.,  194., 100., 204., 105., 155., 196., 400., 206., 420., 216.,
      88.,  110., 224., 115., 234., 120., 179., 226., 460., 236., 480., 246.,
      100., 125., 254., 130., 264., 135.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,  6.,   0.,   4.,  5.,  14.,  10.,  12.,  0.,   10.,
      14., 36., 24.,  30., 0.,   12.,  15., 34., 20.,  24.,  0.,   21.,  24.,
      55., 32., 36.,  0.,  5.,   10.,  21., 12., 18.,  0.,   20.,  25.,  54.,
      30., 36., 0.,   42., 54.,  116., 64., 78., 0.,   28.,  35.,  74.,  40.,
      48., 0.,  49.,  56., 119., 64.,  72., 0.,  9.,   18.,  37.,  20.,  30.,
      0.,  36., 45.,  94., 50.,  60.,  0.,  74., 94.,  196., 104., 126., 0.,
      44., 55., 114., 60., 72.,  0.,   77., 88., 183., 96.,  108., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23.,   29.,   88.,   67.,   164.,  105., 64.,   100.,  260.,  176.,
      412.,  252.,  113.,  143.,  316.,  181., 392.,  219.,  244.,  328.,
      716.,  404.,  868.,  480.,  203.,  257., 544.,  295.,  620.,  333.,
      293.,  371.,  772.,  409.,  848.,  447., 604.,  784.,  1628., 860.,
      1780., 936.,  383.,  485.,  1000., 523., 1076., 561.,  784.,  1012.,
      2084., 1088., 2236., 1164., 473.,  599., 1228., 637.,  1304., 675.,
      563.,  713.,  1456., 751.,  1532., 789., 1144., 1468., 2996., 1544.,
      3148., 1620., 653.,  827.,  1684., 865., 1760., 903.,  1324., 1696.,
      3452., 1772., 3604., 1848., 743.,  941., 1912., 979.,  1988., 1017.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,   25.,  39.,  0., 23.,  29.,  88.,  67.,  81.,  0.,
      58.,  86.,  232.,  162., 206., 0., 83.,  105., 240., 143., 173., 0.,
      149., 171., 396.,  233., 263., 0., 29.,  67.,  140., 81.,  127., 0.,
      143., 181., 392.,  219., 265., 0., 298., 390., 840., 466., 574., 0.,
      203., 257., 544.,  295., 357., 0., 365., 419., 892., 481., 543., 0.,
      53.,  123., 252.,  137., 215., 0., 263., 333., 696., 371., 449., 0.,
      538., 694., 1448., 770., 942., 0., 323., 409., 848., 447., 541., 0.,
      581., 667., 1388., 729., 823., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150.,   190.,   612.,   486.,  1204.,  782.,   420.,   692.,   1848.,
      1284.,  3032.,  1876.,  846.,  1078.,  2388.,  1374.,  2980.,  1670.,
      1812.,  2468.,  5400.,  3060., 6584.,  3652.,  1542.,  1966.,  4164.,
      2262.,  4756.,  2558.,  2238., 2854.,  5940.,  3150.,  6532.,  3446.,
      4596.,  6020.,  12504., 6612., 13688., 7204.,  2934.,  3742.,  7716.,
      4038.,  8308.,  4334.,  5988., 7796.,  16056., 8388.,  17240., 8980.,
      3630.,  4630.,  9492.,  4926., 10084., 5222.,  4326.,  5518.,  11268.,
      5814.,  11860., 6110.,  8772., 11348., 23160., 11940., 24344., 12532.,
      5022.,  6406.,  13044., 6702., 13636., 6998.,  10164., 13124., 26712.,
      13716., 27896., 14308., 5718., 7294.,  14820., 7590.,  15412., 7886.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,   0.,    150.,   190.,  612.,  486.,
      590.,  0.,    380.,  588.,  1640.,  1180., 1516.,  0.,    614.,  782.,
      1796., 1078., 1310., 0.,    1118.,  1286., 2996.,  1774., 2006., 0.,
      190.,  486.,  1012., 590.,  950.,   0.,    1078.,  1374., 2980., 1670.,
      2030., 0.,    2236., 2956., 6376.,  3548., 4396.,  0.,    1542., 1966.,
      4164., 2262., 2750., 0.,    2814.,  3238., 6900.,  3726., 4214., 0.,
      350.,  902.,  1844., 1006., 1622.,  0.,    2006.,  2558., 5348., 2854.,
      3470., 0.,    4092., 5324., 11112., 5916., 7276.,  0.,    2470., 3150.,
      6532., 3446., 4190., 0.,    4510.,  5190., 10804., 5678., 6422., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,  43.,  48.,  27.,  30.,
      17.,  22.,  27.,  32.,  68.,  80.,  45.,  52.,  104., 120., 63.,  72.,
      28.,  32.,  36.,  40.,  79.,  88.,  45.,  50.,  97.,  108., 54.,  60.,
      59.,  70.,  81.,  92.,  176., 200., 99.,  112., 212., 240., 117., 132.,
      49.,  56.,  63.,  70.,  133., 148., 72.,  80.,  151., 168., 81.,  90.,
      70.,  80.,  90.,  100., 187., 208., 99.,  110., 205., 228., 108., 120.,
      143., 166., 189., 212., 392., 440., 207., 232., 428., 480., 225., 252.,
      91.,  104., 117., 130., 241., 268., 126., 140., 259., 288., 135., 150.,
      185., 214., 243., 272., 500., 560., 261., 292., 536., 600., 279., 312.,
      112., 128., 144., 160., 295., 328., 153., 170., 313., 348., 162., 180.,
      133., 152., 171., 190., 349., 388., 180., 200., 367., 408., 189., 210.,
      269., 310., 351., 392., 716., 800., 369., 412., 752., 840., 387., 432.,
      154., 176., 198., 220., 403., 448., 207., 230., 421., 468., 216., 240.,
      311., 358., 405., 452., 824., 920., 423., 472., 860., 960., 441., 492.,
      175., 200., 225., 250., 457., 508., 234., 260., 475., 528., 243., 270.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   10.,  12.,  0., 0.,
      7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,  22.,  24.,  0., 0.,
      16.,  20.,  24.,  28.,  62.,  72.,  42.,  48.,  54.,  60.,  0., 0.,
      21.,  24.,  27.,  30.,  61.,  68.,  36.,  40.,  44.,  48.,  0., 0.,
      39.,  42.,  45.,  48.,  103., 110., 60.,  64.,  68.,  72.,  0., 0.,
      5.,   10.,  15.,  20.,  31.,  42.,  18.,  24.,  30.,  36.,  0., 0.,
      35.,  40.,  45.,  50.,  97.,  108., 54.,  60.,  66.,  72.,  0., 0.,
      72.,  84.,  96.,  108., 206., 232., 114., 128., 142., 156., 0., 0.,
      49.,  56.,  63.,  70.,  133., 148., 72.,  80.,  88.,  96.,  0., 0.,
      91.,  98.,  105., 112., 223., 238., 120., 128., 136., 144., 0., 0.,
      9.,   18.,  27.,  36.,  55.,  74.,  30.,  40.,  50.,  60.,  0., 0.,
      63.,  72.,  81.,  90.,  169., 188., 90.,  100., 110., 120., 0., 0.,
      128., 148., 168., 188., 350., 392., 186., 208., 230., 252., 0., 0.,
      77.,  88.,  99.,  110., 205., 228., 108., 120., 132., 144., 0., 0.,
      143., 154., 165., 176., 343., 366., 180., 192., 204., 216., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,  300.,  336.,
      193.,  215.,  100.,  136.,  172.,  208.,  452.,  540.,  312.,  364.,
      732.,  852.,  452.,  520.,  203.,  233.,  263.,  293.,  580.,  648.,
      333.,  371.,  720.,  804.,  403.,  449.,  424.,  508.,  592.,  676.,
      1292., 1476., 732.,  832.,  1572., 1788., 872.,  988.,  365.,  419.,
      473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272., 613.,  683.,
      527.,  605.,  683.,  761.,  1420., 1584., 753.,  839.,  1560., 1740.,
      823.,  917.,  1072., 1252., 1432., 1612., 2972., 3348., 1572., 1768.,
      3252., 3660., 1712., 1924., 689.,  791.,  893.,  995.,  1840., 2052.,
      963.,  1073., 1980., 2208., 1033., 1151., 1396., 1624., 1852., 2080.,
      3812., 4284., 1992., 2236., 4092., 4596., 2132., 2392., 851.,  977.,
      1103., 1229., 2260., 2520., 1173., 1307., 2400., 2676., 1243., 1385.,
      1013., 1163., 1313., 1463., 2680., 2988., 1383., 1541., 2820., 3144.,
      1453., 1619., 2044., 2368., 2692., 3016., 5492., 6156., 2832., 3172.,
      5772., 6468., 2972., 3328., 1175., 1349., 1523., 1697., 3100., 3456.,
      1593., 1775., 3240., 3612., 1663., 1853., 2368., 2740., 3112., 3484.,
      6332., 7092., 3252., 3640., 6612., 7404., 3392., 3796., 1337., 1535.,
      1733., 1931., 3520., 3924., 1803., 2009., 3660., 4080., 1873., 2087.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   67.,   81.,
      0.,    0.,    41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,
      151.,  165.,  0.,    0.,    94.,   122.,  150.,  178.,  408.,  480.,
      290.,  334.,  378.,  422.,  0.,    0.,    149.,  171.,  193.,  215.,
      440.,  492.,  263.,  293.,  323.,  353.,  0.,    0.,    281.,  303.,
      325.,  347.,  752.,  804.,  443.,  473.,  503.,  533.,  0.,    0.,
      29.,   67.,   105.,  143.,  216.,  300.,  127.,  173.,  219.,  265.,
      0.,    0.,    257.,  295.,  333.,  371.,  720.,  804.,  403.,  449.,
      495.,  541.,  0.,    0.,    526.,  618.,  710.,  802.,  1528., 1728.,
      850.,  958.,  1066., 1174., 0.,    0.,    365.,  419.,  473.,  527.,
      1000., 1116., 543.,  605.,  667.,  729.,  0.,    0.,    689.,  743.,
      797.,  851.,  1696., 1812., 915.,  977.,  1039., 1101., 0.,    0.,
      53.,   123.,  193.,  263.,  392.,  540.,  215.,  293.,  371.,  449.,
      0.,    0.,    473.,  543.,  613.,  683.,  1280., 1428., 683.,  761.,
      839.,  917.,  0.,    0.,    958.,  1114., 1270., 1426., 2648., 2976.,
      1410., 1582., 1754., 1926., 0.,    0.,    581.,  667.,  753.,  839.,
      1560., 1740., 823.,  917.,  1011., 1105., 0.,    0.,    1097., 1183.,
      1269., 1355., 2640., 2820., 1387., 1481., 1575., 1669., 0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      270.,   310.,   350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,
      2500.,  1454.,  1622.,  660.,   932.,   1204.,  1476.,  3256.,  3928.,
      2308.,  2708.,  5464.,  6392.,  3412.,  3940.,  1542.,  1774.,  2006.,
      2238.,  4436.,  4964.,  2558.,  2854.,  5540.,  6196.,  3110.,  3470.,
      3204.,  3860.,  4516.,  5172.,  9880.,  11320., 5620.,  6404.,  12088.,
      13784., 6724.,  7636.,  2814.,  3238.,  3662.,  4086.,  7748.,  8660.,
      4214.,  4702.,  8852.,  9892.,  4766.,  5318.,  4086.,  4702.,  5318.,
      5934.,  11060., 12356., 5870.,  6550.,  12164., 13588., 6422.,  7166.,
      8292.,  9716.,  11140., 12564., 23128., 26104., 12244., 13796., 25336.,
      28568., 13348., 15028., 5358.,  6166.,  6974.,  7782.,  14372., 16052.,
      7526.,  8398.,  15476., 17284., 8078.,  9014.,  10836., 12644., 14452.,
      16260., 29752., 33496., 15556., 17492., 31960., 35960., 16660., 18724.,
      6630.,  7630.,  8630.,  9630.,  17684., 19748., 9182.,  10246., 18788.,
      20980., 9734.,  10862., 7902.,  9094.,  10286., 11478., 20996., 23444.,
      10838., 12094., 22100., 24676., 11390., 12710., 15924., 18500., 21076.,
      23652., 43000., 48280., 22180., 24884., 45208., 50744., 23284., 26116.,
      9174.,  10558., 11942., 13326., 24308., 27140., 12494., 13942., 25412.,
      28372., 13046., 14558., 18468., 21428., 24388., 27348., 49624., 55672.,
      25492., 28580., 51832., 58136., 26596., 29812., 10446., 12022., 13598.,
      15174., 27620., 30836., 14150., 15790., 28724., 32068., 14702., 16406.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   486.,
      590.,   0.,     0.,     270.,   310.,   350.,   390.,   1124.,  1268.,
      902.,   1006.,  1110.,  1214.,  0.,     0.,     620.,   828.,   1036.,
      1244.,  2920.,  3464.,  2140.,  2476.,  2812.,  3148.,  0.,     0.,
      1118.,  1286.,  1454.,  1622.,  3332.,  3732.,  2006.,  2238.,  2470.,
      2702.,  0.,     0.,     2126.,  2294.,  2462.,  2630.,  5732.,  6132.,
      3398.,  3630.,  3862.,  4094.,  0.,     0.,     190.,   486.,   782.,
      1078.,  1604.,  2260.,  950.,   1310.,  1670.,  2030.,  0.,     0.,
      1966.,  2262.,  2558.,  2854.,  5540.,  6196.,  3110.,  3470.,  3830.,
      4190.,  0.,     0.,     4012.,  4732.,  5452.,  6172.,  11752., 13320.,
      6556.,  7404.,  8252.,  9100.,  0.,     0.,     2814.,  3238.,  3662.,
      4086.,  7748.,  8660.,  4214.,  4702.,  5190.,  5678.,  0.,     0.,
      5358.,  5782.,  6206.,  6630.,  13220., 14132., 7142.,  7630.,  8118.,
      8606.,  0.,     0.,     350.,   902.,   1454.,  2006.,  2948.,  4116.,
      1622.,  2238.,  2854.,  3470.,  0.,     0.,     3662.,  4214.,  4766.,
      5318.,  9956.,  11124., 5318.,  5934.,  6550.,  7166.,  0.,     0.,
      7404.,  8636.,  9868.,  11100., 20584., 23176., 10972., 12332., 13692.,
      15052., 0.,     0.,     4510.,  5190.,  5870.,  6550.,  12164., 13588.,
      6422.,  7166.,  7910.,  8654.,  0.,     0.,     8590.,  9270.,  9950.,
      10630., 20708., 22132., 10886., 11630., 12374., 13118., 0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13.,   14.,   15.,   16.,   17.,   18.,   19.,  20.,   47.,   50.,
      53.,   56.,   34.,   36.,   38.,   40.,   81.,  86.,   91.,   96.,
      51.,   54.,   57.,   60.,   29.,   34.,   39.,  44.,   49.,   54.,
      59.,   64.,   124.,  136.,  148.,  160.,  83.,  90.,   97.,   104.,
      192.,  208.,  224.,  240.,  117.,  126.,  135., 144.,  52.,   56.,
      60.,   64.,   68.,   72.,   76.,   80.,   149., 158.,  167.,  176.,
      85.,   90.,   95.,   100.,  183.,  194.,  205., 216.,  102.,  108.,
      114.,  120.,  107.,  118.,  129.,  140.,  151., 162.,  173.,  184.,
      328.,  352.,  376.,  400.,  185.,  198.,  211., 224.,  396.,  424.,
      452.,  480.,  219.,  234.,  249.,  264.,  91.,  98.,   105.,  112.,
      119.,  126.,  133.,  140.,  251.,  266.,  281., 296.,  136.,  144.,
      152.,  160.,  285.,  302.,  319.,  336.,  153., 162.,  171.,  180.,
      130.,  140.,  150.,  160.,  170.,  180.,  190., 200.,  353.,  374.,
      395.,  416.,  187.,  198.,  209.,  220.,  387., 410.,  433.,  456.,
      204.,  216.,  228.,  240.,  263.,  286.,  309., 332.,  355.,  378.,
      401.,  424.,  736.,  784.,  832.,  880.,  389., 414.,  439.,  464.,
      804.,  856.,  908.,  960.,  423.,  450.,  477., 504.,  169.,  182.,
      195.,  208.,  221.,  234.,  247.,  260.,  455., 482.,  509.,  536.,
      238.,  252.,  266.,  280.,  489.,  518.,  547., 576.,  255.,  270.,
      285.,  300.,  341.,  370.,  399.,  428.,  457., 486.,  515.,  544.,
      940.,  1000., 1060., 1120., 491.,  522.,  553., 584.,  1008., 1072.,
      1136., 1200., 525.,  558.,  591.,  624.,  208., 224.,  240.,  256.,
      272.,  288.,  304.,  320.,  557.,  590.,  623., 656.,  289.,  306.,
      323.,  340.,  591.,  626.,  661.,  696.,  306., 324.,  342.,  360.,
      247.,  266.,  285.,  304.,  323.,  342.,  361., 380.,  659.,  698.,
      737.,  776.,  340.,  360.,  380.,  400.,  693., 734.,  775.,  816.,
      357.,  378.,  399.,  420.,  497.,  538.,  579., 620.,  661.,  702.,
      743.,  784.,  1348., 1432., 1516., 1600., 695., 738.,  781.,  824.,
      1416., 1504., 1592., 1680., 729.,  774.,  819., 864.,  286.,  308.,
      330.,  352.,  374.,  396.,  418.,  440.,  761., 806.,  851.,  896.,
      391.,  414.,  437.,  460.,  795.,  842.,  889., 936.,  408.,  432.,
      456.,  480.,  575.,  622.,  669.,  716.,  763., 810.,  857.,  904.,
      1552., 1648., 1744., 1840., 797.,  846.,  895., 944.,  1620., 1720.,
      1820., 1920., 831.,  882.,  933.,  984.,  325., 350.,  375.,  400.,
      425.,  450.,  475.,  500.,  863.,  914.,  965., 1016., 442.,  468.,
      494.,  520.,  897.,  950.,  1003., 1056., 459., 486.,  513.,  540.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  0.,   0.,   0.,   0.,
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  42.,  44.,  46.,  48.,  0.,   0.,   0.,   0.,
      28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,  114., 124., 134., 144.,
      78.,  84.,  90.,  96.,  102., 108., 114., 120., 0.,   0.,   0.,   0.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  0.,   0.,   0.,   0.,
      75.,  78.,  81.,  84.,  87.,  90.,  93.,  96.,  199., 206., 213., 220.,
      116., 120., 124., 128., 132., 136., 140., 144., 0.,   0.,   0.,   0.,
      5.,   10.,  15.,  20.,  25.,  30.,  35.,  40.,  51.,  62.,  73.,  84.,
      30.,  36.,  42.,  48.,  54.,  60.,  66.,  72.,  0.,   0.,   0.,   0.,
      65.,  70.,  75.,  80.,  85.,  90.,  95.,  100., 183., 194., 205., 216.,
      102., 108., 114., 120., 126., 132., 138., 144., 0.,   0.,   0.,   0.,
      132., 144., 156., 168., 180., 192., 204., 216., 386., 412., 438., 464.,
      214., 228., 242., 256., 270., 284., 298., 312., 0.,   0.,   0.,   0.,
      91.,  98.,  105., 112., 119., 126., 133., 140., 251., 266., 281., 296.,
      136., 144., 152., 160., 168., 176., 184., 192., 0.,   0.,   0.,   0.,
      175., 182., 189., 196., 203., 210., 217., 224., 431., 446., 461., 476.,
      232., 240., 248., 256., 264., 272., 280., 288., 0.,   0.,   0.,   0.,
      9.,   18.,  27.,  36.,  45.,  54.,  63.,  72.,  91.,  110., 129., 148.,
      50.,  60.,  70.,  80.,  90.,  100., 110., 120., 0.,   0.,   0.,   0.,
      117., 126., 135., 144., 153., 162., 171., 180., 319., 338., 357., 376.,
      170., 180., 190., 200., 210., 220., 230., 240., 0.,   0.,   0.,   0.,
      236., 256., 276., 296., 316., 336., 356., 376., 658., 700., 742., 784.,
      350., 372., 394., 416., 438., 460., 482., 504., 0.,   0.,   0.,   0.,
      143., 154., 165., 176., 187., 198., 209., 220., 387., 410., 433., 456.,
      204., 216., 228., 240., 252., 264., 276., 288., 0.,   0.,   0.,   0.,
      275., 286., 297., 308., 319., 330., 341., 352., 663., 686., 709., 732.,
      348., 360., 372., 384., 396., 408., 420., 432., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77.,   83.,    89.,    95.,    101.,   107.,   113.,   119.,   304.,
      324.,  344.,   364.,   235.,   249.,   263.,   277.,   572.,   608.,
      644.,  680.,   369.,   391.,   413.,   435.,   172.,   208.,   244.,
      280.,  316.,   352.,   388.,   424.,   836.,   924.,   1012.,  1100.,
      584.,  636.,   688.,   740.,   1372.,  1492.,  1612.,  1732.,  852.,
      920.,  988.,   1056.,  383.,   413.,   443.,   473.,   503.,   533.,
      563.,  593.,   1108.,  1176.,  1244.,  1312.,  637.,   675.,   713.,
      751.,  1376.,  1460.,  1544.,  1628.,  771.,   817.,   863.,   909.,
      784.,  868.,   952.,   1036.,  1120.,  1204.,  1288.,  1372.,  2444.,
      2628., 2812.,  2996.,  1388.,  1488.,  1588.,  1688.,  2980.,  3196.,
      3412., 3628.,  1656.,  1772.,  1888.,  2004.,  689.,   743.,   797.,
      851.,  905.,   959.,   1013.,  1067.,  1912.,  2028.,  2144.,  2260.,
      1039., 1101.,  1163.,  1225.,  2180.,  2312.,  2444.,  2576.,  1173.,
      1243., 1313.,  1383.,  995.,   1073.,  1151.,  1229.,  1307.,  1385.,
      1463., 1541.,  2716.,  2880.,  3044.,  3208.,  1441.,  1527.,  1613.,
      1699., 2984.,  3164.,  3344.,  3524.,  1575.,  1669.,  1763.,  1857.,
      2008., 2188.,  2368.,  2548.,  2728.,  2908.,  3088.,  3268.,  5660.,
      6036., 6412.,  6788.,  2996.,  3192.,  3388.,  3584.,  6196.,  6604.,
      7012., 7420.,  3264.,  3476.,  3688.,  3900.,  1301.,  1403.,  1505.,
      1607., 1709.,  1811.,  1913.,  2015.,  3520.,  3732.,  3944.,  4156.,
      1843., 1953.,  2063.,  2173.,  3788.,  4016.,  4244.,  4472.,  1977.,
      2095., 2213.,  2331.,  2620.,  2848.,  3076.,  3304.,  3532.,  3760.,
      3988., 4216.,  7268.,  7740.,  8212.,  8684.,  3800.,  4044.,  4288.,
      4532., 7804.,  8308.,  8812.,  9316.,  4068.,  4328.,  4588.,  4848.,
      1607., 1733.,  1859.,  1985.,  2111.,  2237.,  2363.,  2489.,  4324.,
      4584., 4844.,  5104.,  2245.,  2379.,  2513.,  2647.,  4592.,  4868.,
      5144., 5420.,  2379.,  2521.,  2663.,  2805.,  1913.,  2063.,  2213.,
      2363., 2513.,  2663.,  2813.,  2963.,  5128.,  5436.,  5744.,  6052.,
      2647., 2805.,  2963.,  3121.,  5396.,  5720.,  6044.,  6368.,  2781.,
      2947., 3113.,  3279.,  3844.,  4168.,  4492.,  4816.,  5140.,  5464.,
      5788., 6112.,  10484., 11148., 11812., 12476., 5408.,  5748.,  6088.,
      6428., 11020., 11716., 12412., 13108., 5676.,  6032.,  6388.,  6744.,
      2219., 2393.,  2567.,  2741.,  2915.,  3089.,  3263.,  3437.,  5932.,
      6288., 6644.,  7000.,  3049.,  3231.,  3413.,  3595.,  6200.,  6572.,
      6944., 7316.,  3183.,  3373.,  3563.,  3753.,  4456.,  4828.,  5200.,
      5572., 5944.,  6316.,  6688.,  7060.,  12092., 12852., 13612., 14372.,
      6212., 6600.,  6988.,  7376.,  12628., 13420., 14212., 15004., 6480.,
      6884., 7288.,  7692.,  2525.,  2723.,  2921.,  3119.,  3317.,  3515.,
      3713., 3911.,  6736.,  7140.,  7544.,  7948.,  3451.,  3657.,  3863.,
      4069., 7004.,  7424.,  7844.,  8264.,  3585.,  3799.,  4013.,  4227.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  123.,  137.,  151.,  165.,
      0.,    0.,    0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,
      113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,
      291.,  305.,  319.,  333.,  0.,    0.,    0.,    0.,    166.,  194.,
      222.,  250.,  278.,  306.,  334.,  362.,  760.,  832.,  904.,  976.,
      546.,  590.,  634.,  678.,  722.,  766.,  810.,  854.,  0.,    0.,
      0.,    0.,    281.,  303.,  325.,  347.,  369.,  391.,  413.,  435.,
      840.,  892.,  944.,  996.,  503.,  533.,  563.,  593.,  623.,  653.,
      683.,  713.,  0.,    0.,    0.,    0.,    545.,  567.,  589.,  611.,
      633.,  655.,  677.,  699.,  1464., 1516., 1568., 1620., 863.,  893.,
      923.,  953.,  983.,  1013., 1043., 1073., 0.,    0.,    0.,    0.,
      29.,   67.,   105.,  143.,  181.,  219.,  257.,  295.,  368.,  452.,
      536.,  620.,  219.,  265.,  311.,  357.,  403.,  449.,  495.,  541.,
      0.,    0.,    0.,    0.,    485.,  523.,  561.,  599.,  637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      955.,  1001., 1047., 1093., 0.,    0.,    0.,    0.,    982.,  1074.,
      1166., 1258., 1350., 1442., 1534., 1626., 2904., 3104., 3304., 3504.,
      1618., 1726., 1834., 1942., 2050., 2158., 2266., 2374., 0.,    0.,
      0.,    0.,    689.,  743.,  797.,  851.,  905.,  959.,  1013., 1067.,
      1912., 2028., 2144., 2260., 1039., 1101., 1163., 1225., 1287., 1349.,
      1411., 1473., 0.,    0.,    0.,    0.,    1337., 1391., 1445., 1499.,
      1553., 1607., 1661., 1715., 3304., 3420., 3536., 3652., 1783., 1845.,
      1907., 1969., 2031., 2093., 2155., 2217., 0.,    0.,    0.,    0.,
      53.,   123.,  193.,  263.,  333.,  403.,  473.,  543.,  672.,  820.,
      968.,  1116., 371.,  449.,  527.,  605.,  683.,  761.,  839.,  917.,
      0.,    0.,    0.,    0.,    893.,  963.,  1033., 1103., 1173., 1243.,
      1313., 1383., 2448., 2596., 2744., 2892., 1307., 1385., 1463., 1541.,
      1619., 1697., 1775., 1853., 0.,    0.,    0.,    0.,    1798., 1954.,
      2110., 2266., 2422., 2578., 2734., 2890., 5048., 5376., 5704., 6032.,
      2690., 2862., 3034., 3206., 3378., 3550., 3722., 3894., 0.,    0.,
      0.,    0.,    1097., 1183., 1269., 1355., 1441., 1527., 1613., 1699.,
      2984., 3164., 3344., 3524., 1575., 1669., 1763., 1857., 1951., 2045.,
      2139., 2233., 0.,    0.,    0.,    0.,    2129., 2215., 2301., 2387.,
      2473., 2559., 2645., 2731., 5144., 5324., 5504., 5684., 2703., 2797.,
      2891., 2985., 3079., 3173., 3267., 3361., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      510.,   550.,    590.,    630.,    670.,   710.,   750.,   790.,
      2148.,  2292.,   2436.,   2580.,   1734.,  1838.,  1942.,  2046.,
      4276.,  4548.,   4820.,   5092.,   2798.,  2966.,  3134.,  3302.,
      1140.,  1412.,   1684.,   1956.,   2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,   7416.,   8088.,   4356.,  4756.,  5156.,  5556.,
      10328., 11256.,  12184.,  13112.,  6484.,  7012.,  7540.,  8068.,
      2934.,  3166.,   3398.,   3630.,   3862.,  4094.,  4326.,  4558.,
      8532.,  9060.,   9588.,   10116.,  4926.,  5222.,  5518.,  5814.,
      10660., 11316.,  11972.,  12628.,  5990.,  6350.,  6710.,  7070.,
      5988.,  6644.,   7300.,   7956.,   8612.,  9268.,  9924.,  10580.,
      18840., 20280.,  21720.,  23160.,  10740., 11524., 12308., 13092.,
      23096., 24792.,  26488.,  28184.,  12868., 13780., 14692., 15604.,
      5358.,  5782.,   6206.,   6630.,   7054.,  7478.,  7902.,  8326.,
      14916., 15828.,  16740.,  17652.,  8118.,  8606.,  9094.,  9582.,
      17044., 18084.,  19124.,  20164.,  9182.,  9734.,  10286., 10838.,
      7782.,  8398.,   9014.,   9630.,   10246., 10862., 11478., 12094.,
      21300., 22596.,  23892.,  25188.,  11310., 11990., 12670., 13350.,
      23428., 24852.,  26276.,  27700.,  12374., 13118., 13862., 14606.,
      15684., 17108.,  18532.,  19956.,  21380., 22804., 24228., 25652.,
      44376., 47352.,  50328.,  53304.,  23508., 25060., 26612., 28164.,
      48632., 51864.,  55096.,  58328.,  25636., 27316., 28996., 30676.,
      10206., 11014.,  11822.,  12630.,  13438., 14246., 15054., 15862.,
      27684., 29364.,  31044.,  32724.,  14502., 15374., 16246., 17118.,
      29812., 31620.,  33428.,  35236.,  15566., 16502., 17438., 18374.,
      20532., 22340.,  24148.,  25956.,  27764., 29572., 31380., 33188.,
      57144., 60888.,  64632.,  68376.,  29892., 31828., 33764., 35700.,
      61400., 65400.,  69400.,  73400.,  32020., 34084., 36148., 38212.,
      12630., 13630.,  14630.,  15630.,  16630., 17630., 18630., 19630.,
      34068., 36132.,  38196.,  40260.,  17694., 18758., 19822., 20886.,
      36196., 38388.,  40580.,  42772.,  18758., 19886., 21014., 22142.,
      15054., 16246.,  17438.,  18630.,  19822., 21014., 22206., 23398.,
      40452., 42900.,  45348.,  47796.,  20886., 22142., 23398., 24654.,
      42580., 45156.,  47732.,  50308.,  21950., 23270., 24590., 25910.,
      30228., 32804.,  35380.,  37956.,  40532., 43108., 45684., 48260.,
      82680., 87960.,  93240.,  98520.,  42660., 45364., 48068., 50772.,
      86936., 92472.,  98008.,  103544., 44788., 47620., 50452., 53284.,
      17478., 18862.,  20246.,  21630.,  23014., 24398., 25782., 27166.,
      46836., 49668.,  52500.,  55332.,  24078., 25526., 26974., 28422.,
      48964., 51924.,  54884.,  57844.,  25142., 26654., 28166., 29678.,
      35076., 38036.,  40996.,  43956.,  46916., 49876., 52836., 55796.,
      95448., 101496., 107544., 113592., 49044., 52132., 55220., 58308.,
      99704., 106008., 112312., 118616., 51172., 54388., 57604., 60820.,
      19902., 21478.,  23054.,  24630.,  26206., 27782., 29358., 30934.,
      53220., 56436.,  59652.,  62868.,  27270., 28910., 30550., 32190.,
      55348., 58692.,  62036.,  65380.,  28334., 30038., 31742., 33446.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   902.,   1006.,
      1110.,  1214.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,
      630.,   670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,
      1734.,  1838.,  1942.,  2046.,  2150.,  2254.,  2358.,  2462.,  0.,
      0.,     0.,     0.,     1100.,  1308.,  1516.,  1724.,  1932.,  2140.,
      2348.,  2556.,  5480.,  6024.,  6568.,  7112.,  4060.,  4396.,  4732.,
      5068.,  5404.,  5740.,  6076.,  6412.,  0.,     0.,     0.,     0.,
      2126.,  2294.,  2462.,  2630.,  2798.,  2966.,  3134.,  3302.,  6404.,
      6804.,  7204.,  7604.,  3862.,  4094.,  4326.,  4558.,  4790.,  5022.,
      5254.,  5486.,  0.,     0.,     0.,     0.,     4142.,  4310.,  4478.,
      4646.,  4814.,  4982.,  5150.,  5318.,  11204., 11604., 12004., 12404.,
      6646.,  6878.,  7110.,  7342.,  7574.,  7806.,  8038.,  8270.,  0.,
      0.,     0.,     0.,     190.,   486.,   782.,   1078.,  1374.,  1670.,
      1966.,  2262.,  2788.,  3444.,  4100.,  4756.,  1670.,  2030.,  2390.,
      2750.,  3110.,  3470.,  3830.,  4190.,  0.,     0.,     0.,     0.,
      3742.,  4038.,  4334.,  4630.,  4926.,  5222.,  5518.,  5814.,  10660.,
      11316., 11972., 12628., 5990.,  6350.,  6710.,  7070.,  7430.,  7790.,
      8150.,  8510.,  0.,     0.,     0.,     0.,     7564.,  8284.,  9004.,
      9724.,  10444., 11164., 11884., 12604., 22504., 24072., 25640., 27208.,
      12572., 13420., 14268., 15116., 15964., 16812., 17660., 18508., 0.,
      0.,     0.,     0.,     5358.,  5782.,  6206.,  6630.,  7054.,  7478.,
      7902.,  8326.,  14916., 15828., 16740., 17652., 8118.,  8606.,  9094.,
      9582.,  10070., 10558., 11046., 11534., 0.,     0.,     0.,     0.,
      10446., 10870., 11294., 11718., 12142., 12566., 12990., 13414., 25860.,
      26772., 27684., 28596., 13974., 14462., 14950., 15438., 15926., 16414.,
      16902., 17390., 0.,     0.,     0.,     0.,     350.,   902.,   1454.,
      2006.,  2558.,  3110.,  3662.,  4214.,  5156.,  6324.,  7492.,  8660.,
      2854.,  3470.,  4086.,  4702.,  5318.,  5934.,  6550.,  7166.,  0.,
      0.,     0.,     0.,     6974.,  7526.,  8078.,  8630.,  9182.,  9734.,
      10286., 10838., 19172., 20340., 21508., 22676., 10246., 10862., 11478.,
      12094., 12710., 13326., 13942., 14558., 0.,     0.,     0.,     0.,
      14028., 15260., 16492., 17724., 18956., 20188., 21420., 22652., 39528.,
      42120., 44712., 47304., 21084., 22444., 23804., 25164., 26524., 27884.,
      29244., 30604., 0.,     0.,     0.,     0.,     8590.,  9270.,  9950.,
      10630., 11310., 11990., 12670., 13350., 23428., 24852., 26276., 27700.,
      12374., 13118., 13862., 14606., 15350., 16094., 16838., 17582., 0.,
      0.,     0.,     0.,     16750., 17430., 18110., 18790., 19470., 20150.,
      20830., 21510., 40516., 41940., 43364., 44788., 21302., 22046., 22790.,
      23534., 24278., 25022., 25766., 26510., 0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4.,   5.,   14.,  10.,  24.,  15.,  34.,  20.,  12.,  18.,  44.,  28.,
      64.,  38.,  84.,  48.,  20.,  25.,  54.,  30.,  64.,  35.,  74.,  40.,
      44.,  58.,  124., 68.,  144., 78.,  164., 88.,  36.,  45.,  94.,  50.,
      104., 55.,  114., 60.,  52.,  65.,  134., 70.,  144., 75.,  154., 80.,
      108., 138., 284., 148., 304., 158., 324., 168., 68.,  85.,  174., 90.,
      184., 95.,  194., 100., 140., 178., 364., 188., 384., 198., 404., 208.,
      84.,  105., 214., 110., 224., 115., 234., 120., 100., 125., 254., 130.,
      264., 135., 274., 140., 204., 258., 524., 268., 544., 278., 564., 288.,
      116., 145., 294., 150., 304., 155., 314., 160., 236., 298., 604., 308.,
      624., 318., 644., 328., 132., 165., 334., 170., 344., 175., 354., 180.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   9.,   0.,   4.,   5.,   14.,  10.,
      24.,  15.,  18.,  0.,   11.,  16.,  40.,  26.,  60.,  36.,  45.,  0.,
      16.,  20.,  44.,  25.,  54.,  30.,  36.,  0.,   28.,  32.,  71.,  40.,
      87.,  48.,  54.,  0.,   7.,   14.,  29.,  16.,  33.,  18.,  27.,  0.,
      28.,  35.,  74.,  40.,  84.,  45.,  54.,  0.,   59.,  76.,  160., 86.,
      180., 96.,  117., 0.,   40.,  50.,  104., 55.,  114., 60.,  72.,  0.,
      70.,  80.,  167., 88.,  183., 96.,  108., 0.,   13.,  26.,  53.,  28.,
      57.,  30.,  45.,  0.,   52.,  65.,  134., 70.,  144., 75.,  90.,  0.,
      107., 136., 280., 146., 300., 156., 189., 0.,   64.,  80.,  164., 85.,
      174., 90.,  108., 0.,   112., 128., 263., 136., 279., 144., 162., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23.,   29.,   88.,   67.,   164.,  105.,  240.,  143.,  70.,   114.,
      288.,  190.,  440.,  266.,  592.,  342.,  143.,  181.,  392.,  219.,
      468.,  257.,  544.,  295.,  310.,  418.,  896.,  494.,  1048., 570.,
      1200., 646.,  263.,  333.,  696.,  371.,  772.,  409.,  848.,  447.,
      383.,  485.,  1000., 523.,  1076., 561.,  1152., 599.,  790.,  1026.,
      2112., 1102., 2264., 1178., 2416., 1254., 503.,  637.,  1304., 675.,
      1380., 713.,  1456., 751.,  1030., 1330., 2720., 1406., 2872., 1482.,
      3024., 1558., 623.,  789.,  1608., 827.,  1684., 865.,  1760., 903.,
      743.,  941.,  1912., 979.,  1988., 1017., 2064., 1055., 1510., 1938.,
      3936., 2014., 4088., 2090., 4240., 2166., 863.,  1093., 2216., 1131.,
      2292., 1169., 2368., 1207., 1750., 2242., 4544., 2318., 4696., 2394.,
      4848., 2470., 983.,  1245., 2520., 1283., 2596., 1321., 2672., 1359.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,  56.,   39.,   61.,   0.,    23.,   29.,
      88.,   67.,   164.,  105., 127.,  0.,    64.,   100.,  260.,  176.,
      412.,  252.,  320.,  0.,   113.,  143.,  316.,  181.,  392.,  219.,
      265.,  0.,    203.,  233., 520.,  295.,  644.,  357.,  403.,  0.,
      41.,   95.,   196.,  109., 224.,  123.,  193.,  0.,    203.,  257.,
      544.,  295.,  620.,  333., 403.,  0.,    424.,  556.,  1172., 632.,
      1324., 708.,  872.,  0.,   293.,  371.,  772.,  409.,  848.,  447.,
      541.,  0.,    527.,  605., 1264., 667.,  1388., 729.,  823.,  0.,
      77.,   179.,  364.,  193., 392.,  207.,  325.,  0.,    383.,  485.,
      1000., 523.,  1076., 561., 679.,  0.,    784.,  1012., 2084., 1088.,
      2236., 1164., 1424., 0.,   473.,  599.,  1228., 637.,  1304., 675.,
      817.,  0.,    851.,  977., 2008., 1039., 2132., 1101., 1243., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150.,   190.,   612.,   486.,   1204.,  782.,   1796.,  1078.,  460.,
      796.,   2056.,  1388.,  3240.,  1980.,  4424.,  2572.,  1078.,  1374.,
      2980.,  1670.,  3572.,  1966.,  4164.,  2262.,  2316.,  3164.,  6792.,
      3756.,  7976.,  4348.,  9160.,  4940.,  2006.,  2558.,  5348.,  2854.,
      5940.,  3150.,  6532.,  3446.,  2934.,  3742.,  7716.,  4038.,  8308.,
      4334.,  8900.,  4630.,  6028.,  7900.,  16264., 8492.,  17448., 9084.,
      18632., 9676.,  3862.,  4926.,  10084., 5222.,  10676., 5518.,  11268.,
      5814.,  7884.,  10268., 21000., 10860., 22184., 11452., 23368., 12044.,
      4790.,  6110.,  12452., 6406.,  13044., 6702.,  13636., 6998.,  5718.,
      7294.,  14820., 7590.,  15412., 7886.,  16004., 8182.,  11596., 15004.,
      30472., 15596., 31656., 16188., 32840., 16780., 6646.,  8478.,  17188.,
      8774.,  17780., 9070.,  18372., 9366.,  13452., 17372., 35208., 17964.,
      36392., 18556., 37576., 19148., 7574.,  9662.,  19556., 9958.,  20148.,
      10254., 20740., 10550.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,   174.,  388.,   278.,  446.,   0.,    150.,   190.,
      612.,   486.,  1204.,  782.,  950.,   0.,    420.,   692.,  1848.,  1284.,
      3032.,  1876., 2404.,  0.,    846.,   1078., 2388.,  1374., 2980.,  1670.,
      2030.,  0.,    1542.,  1774., 3972.,  2262., 4948.,  2750., 3110.,  0.,
      270.,   694.,  1428.,  798.,  1636.,  902.,  1454.,  0.,    1542.,  1966.,
      4164.,  2262., 4756.,  2558., 3110.,  0.,    3204.,  4244., 8952.,  4836.,
      10136., 5428., 6724.,  0.,    2238.,  2854., 5940.,  3150., 6532.,  3446.,
      4190.,  0.,    4086.,  4702., 9828.,  5190., 10804., 5678., 6422.,  0.,
      510.,   1318., 2676.,  1422., 2884.,  1526., 2462.,  0.,    2934.,  3742.,
      7716.,  4038., 8308.,  4334., 5270.,  0.,    5988.,  7796., 16056., 8388.,
      17240., 8980., 11044., 0.,    3630.,  4630., 9492.,  4926., 10084., 5222.,
      6350.,  0.,    6630.,  7630., 15684., 8118., 16660., 8606., 9734.,  0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7.,    8.,    9.,    10.,   25.,   28.,   18.,  20.,   43.,   48.,   27.,
      30.,   61.,   68.,   36.,   40.,   18.,   24.,  30.,   36.,   74.,   88.,
      48.,   56.,   110.,  128.,  66.,   76.,   146., 168.,  84.,   96.,   35.,
      40.,   45.,   50.,   97.,   108.,  54.,   60.,  115.,  128.,  63.,   70.,
      133.,  148.,  72.,   80.,   74.,   88.,   102., 116.,  218.,  248.,  120.,
      136.,  254.,  288.,  138.,  156.,  290.,  328., 156.,  176.,  63.,   72.,
      81.,   90.,   169.,  188.,  90.,   100.,  187., 208.,  99.,   110.,  205.,
      228.,  108.,  120.,  91.,   104.,  117.,  130., 241.,  268.,  126.,  140.,
      259.,  288.,  135.,  150.,  277.,  308.,  144., 160.,  186.,  216.,  246.,
      276.,  506.,  568.,  264.,  296.,  542.,  608., 282.,  316.,  578.,  648.,
      300.,  336.,  119.,  136.,  153.,  170.,  313., 348.,  162.,  180.,  331.,
      368.,  171.,  190.,  349.,  388.,  180.,  200., 242.,  280.,  318.,  356.,
      650.,  728.,  336.,  376.,  686.,  768.,  354., 396.,  722.,  808.,  372.,
      416.,  147.,  168.,  189.,  210.,  385.,  428., 198.,  220.,  403.,  448.,
      207.,  230.,  421.,  468.,  216.,  240.,  175., 200.,  225.,  250.,  457.,
      508.,  234.,  260.,  475.,  528.,  243.,  270., 493.,  548.,  252.,  280.,
      354.,  408.,  462.,  516.,  938.,  1048., 480., 536.,  974.,  1088., 498.,
      556.,  1010., 1128., 516.,  576.,  203.,  232., 261.,  290.,  529.,  588.,
      270.,  300.,  547.,  608.,  279.,  310.,  565., 628.,  288.,  320.,  410.,
      472.,  534.,  596.,  1082., 1208., 552.,  616., 1118., 1248., 570.,  636.,
      1154., 1288., 588.,  656.,  231.,  264.,  297., 330.,  601.,  668.,  306.,
      340.,  619.,  688.,  315.,  350.,  637.,  708., 324.,  360.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,
      15.,  18.,  0.,   0.,   7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,
      43.,  48.,  27.,  30.,  33.,  36.,  0.,   0.,   17.,  22.,  27.,  32.,
      68.,  80.,  45.,  52.,  104., 120., 63.,  72.,  81.,  90.,  0.,   0.,
      28.,  32.,  36.,  40.,  79.,  88.,  45.,  50.,  97.,  108., 54.,  60.,
      66.,  72.,  0.,   0.,   52.,  56.,  60.,  64.,  133., 142., 75.,  80.,
      163., 174., 90.,  96.,  102., 108., 0.,   0.,   7.,   14.,  21.,  28.,
      43.,  58.,  24.,  32.,  49.,  66.,  27.,  36.,  45.,  54.,  0.,   0.,
      49.,  56.,  63.,  70.,  133., 148., 72.,  80.,  151., 168., 81.,  90.,
      99.,  108., 0.,   0.,   101., 118., 135., 152., 284., 320., 153., 172.,
      320., 360., 171., 192., 213., 234., 0.,   0.,   70.,  80.,  90.,  100.,
      187., 208., 99.,  110., 205., 228., 108., 120., 132., 144., 0.,   0.,
      130., 140., 150., 160., 313., 334., 165., 176., 343., 366., 180., 192.,
      204., 216., 0.,   0.,   13.,  26.,  39.,  52.,  79.,  106., 42.,  56.,
      85.,  114., 45.,  60.,  75.,  90.,  0.,   0.,   91.,  104., 117., 130.,
      241., 268., 126., 140., 259., 288., 135., 150., 165., 180., 0.,   0.,
      185., 214., 243., 272., 500., 560., 261., 292., 536., 600., 279., 312.,
      345., 378., 0.,   0.,   112., 128., 144., 160., 295., 328., 153., 170.,
      313., 348., 162., 180., 198., 216., 0.,   0.,   208., 224., 240., 256.,
      493., 526., 255., 272., 523., 558., 270., 288., 306., 324., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,  300.,  336.,
      193.,  215.,  440.,  492.,  263.,  293.,  106.,  150.,  194.,  238.,
      496.,  600.,  334.,  394.,  776.,  912.,  474.,  550.,  1056., 1224.,
      614.,  706.,  257.,  295.,  333.,  371.,  720.,  804.,  403.,  449.,
      860.,  960.,  473.,  527.,  1000., 1116., 543.,  605.,  538.,  646.,
      754.,  862.,  1616., 1848., 894.,  1018., 1896., 2160., 1034., 1174.,
      2176., 2472., 1174., 1330., 473.,  543.,  613.,  683.,  1280., 1428.,
      683.,  761.,  1420., 1584., 753.,  839.,  1560., 1740., 823.,  917.,
      689.,  791.,  893.,  995.,  1840., 2052., 963.,  1073., 1980., 2208.,
      1033., 1151., 2120., 2364., 1103., 1229., 1402., 1638., 1874., 2110.,
      3856., 4344., 2014., 2266., 4136., 4656., 2154., 2422., 4416., 4968.,
      2294., 2578., 905.,  1039., 1173., 1307., 2400., 2676., 1243., 1385.,
      2540., 2832., 1313., 1463., 2680., 2988., 1383., 1541., 1834., 2134.,
      2434., 2734., 4976., 5592., 2574., 2890., 5256., 5904., 2714., 3046.,
      5536., 6216., 2854., 3202., 1121., 1287., 1453., 1619., 2960., 3300.,
      1523., 1697., 3100., 3456., 1593., 1775., 3240., 3612., 1663., 1853.,
      1337., 1535., 1733., 1931., 3520., 3924., 1803., 2009., 3660., 4080.,
      1873., 2087., 3800., 4236., 1943., 2165., 2698., 3126., 3554., 3982.,
      7216., 8088., 3694., 4138., 7496., 8400., 3834., 4294., 7776., 8712.,
      3974., 4450., 1553., 1783., 2013., 2243., 4080., 4548., 2083., 2321.,
      4220., 4704., 2153., 2399., 4360., 4860., 2223., 2477., 3130., 3622.,
      4114., 4606., 8336., 9336., 4254., 4762., 8616., 9648., 4394., 4918.,
      8896., 9960., 4534., 5074., 1769., 2031., 2293., 2555., 4640., 5172.,
      2363., 2633., 4780., 5328., 2433., 2711., 4920., 5484., 2503., 2789.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   105.,  127.,  0.,    0.,    41.,   47.,   53.,   59.,
      160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,  237.,  259.,
      0.,    0.,    100.,  136.,  172.,  208.,  452.,  540.,  312.,  364.,
      732.,  852.,  452.,  520.,  588.,  656.,  0.,    0.,    203.,  233.,
      263.,  293.,  580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,
      495.,  541.,  0.,    0.,    383.,  413.,  443.,  473.,  988.,  1056.,
      561.,  599.,  1224., 1308., 679.,  725.,  771.,  817.,  0.,    0.,
      41.,   95.,   149.,  203.,  304.,  420.,  171.,  233.,  348.,  480.,
      193.,  263.,  333.,  403.,  0.,    0.,    365.,  419.,  473.,  527.,
      1000., 1116., 543.,  605.,  1140., 1272., 613.,  683.,  753.,  823.,
      0.,    0.,    748.,  880.,  1012., 1144., 2132., 2412., 1152., 1300.,
      2412., 2724., 1292., 1456., 1620., 1784., 0.,    0.,    527.,  605.,
      683.,  761.,  1420., 1584., 753.,  839.,  1560., 1740., 823.,  917.,
      1011., 1105., 0.,    0.,    995.,  1073., 1151., 1229., 2404., 2568.,
      1269., 1355., 2640., 2820., 1387., 1481., 1575., 1669., 0.,    0.,
      77.,   179.,  281.,  383.,  568.,  780.,  303.,  413.,  612.,  840.,
      325.,  443.,  561.,  679.,  0.,    0.,    689.,  791.,  893.,  995.,
      1840., 2052., 963.,  1073., 1980., 2208., 1033., 1151., 1269., 1387.,
      0.,    0.,    1396., 1624., 1852., 2080., 3812., 4284., 1992., 2236.,
      4092., 4596., 2132., 2392., 2652., 2912., 0.,    0.,    851.,  977.,
      1103., 1229., 2260., 2520., 1173., 1307., 2400., 2676., 1243., 1385.,
      1527., 1669., 0.,    0.,    1607., 1733., 1859., 1985., 3820., 4080.,
      1977., 2111., 4056., 4332., 2095., 2237., 2379., 2521., 0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      270.,   310.,   350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,
      2500.,  1454.,  1622.,  3332.,  3732.,  2006.,  2238.,  700.,   1036.,
      1372.,  1708.,  3592.,  4392.,  2476.,  2940.,  5800.,  6856.,  3580.,
      4172.,  8008.,  9320.,  4684.,  5404.,  1966.,  2262.,  2558.,  2854.,
      5540.,  6196.,  3110.,  3470.,  6644.,  7428.,  3662.,  4086.,  7748.,
      8660.,  4214.,  4702.,  4092.,  4940.,  5788.,  6636.,  12424., 14248.,
      6892.,  7868.,  14632., 16712., 7996.,  9100.,  16840., 19176., 9100.,
      10332., 3662.,  4214.,  4766.,  5318.,  9956.,  11124., 5318.,  5934.,
      11060., 12356., 5870.,  6550.,  12164., 13588., 6422.,  7166.,  5358.,
      6166.,  6974.,  7782.,  14372., 16052., 7526.,  8398.,  15476., 17284.,
      8078.,  9014.,  16580., 18516., 8630.,  9630.,  10876., 12748., 14620.,
      16492., 30088., 33960., 15724., 17724., 32296., 36424., 16828., 18956.,
      34504., 38888., 17932., 20188., 7054.,  8118.,  9182.,  10246., 18788.,
      20980., 9734.,  10862., 19892., 22212., 10286., 11478., 20996., 23444.,
      10838., 12094., 14268., 16652., 19036., 21420., 38920., 43816., 20140.,
      22652., 41128., 46280., 21244., 23884., 43336., 48744., 22348., 25116.,
      8750.,  10070., 11390., 12710., 23204., 25908., 11942., 13326., 24308.,
      27140., 12494., 13942., 25412., 28372., 13046., 14558., 10446., 12022.,
      13598., 15174., 27620., 30836., 14150., 15790., 28724., 32068., 14702.,
      16406., 29828., 33300., 15254., 17022., 21052., 24460., 27868., 31276.,
      56584., 63528., 28972., 32508., 58792., 65992., 30076., 33740., 61000.,
      68456., 31180., 34972., 12142., 13974., 15806., 17638., 32036., 35764.,
      16358., 18254., 33140., 36996., 16910., 18870., 34244., 38228., 17462.,
      19486., 24444., 28364., 32284., 36204., 65416., 73384., 33388., 37436.,
      67624., 75848., 34492., 38668., 69832., 78312., 35596., 39900., 13838.,
      15926., 18014., 20102., 36452., 40692., 18566., 20718., 37556., 41924.,
      19118., 21334., 38660., 43156., 19670., 21950.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   596.,
      868.,   446.,   614.,   782.,   950.,   0.,     0.,     270.,   310.,
      350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,  1454.,
      1622.,  1790.,  1958.,  0.,     0.,     660.,   932.,   1204.,  1476.,
      3256.,  3928.,  2308.,  2708.,  5464.,  6392.,  3412.,  3940.,  4468.,
      4996.,  0.,     0.,     1542.,  1774.,  2006.,  2238.,  4436.,  4964.,
      2558.,  2854.,  5540.,  6196.,  3110.,  3470.,  3830.,  4190.,  0.,
      0.,     2934.,  3166.,  3398.,  3630.,  7604.,  8132.,  4334.,  4630.,
      9476.,  10132., 5270.,  5630.,  5990.,  6350.,  0.,     0.,     270.,
      694.,   1118.,  1542.,  2276.,  3188.,  1286.,  1774.,  2612.,  3652.,
      1454.,  2006.,  2558.,  3110.,  0.,     0.,     2814.,  3238.,  3662.,
      4086.,  7748.,  8660.,  4214.,  4702.,  8852.,  9892.,  4766.,  5318.,
      5870.,  6422.,  0.,     0.,     5748.,  6788.,  7828.,  8868.,  16504.,
      18712., 8932.,  10100., 18712., 21176., 10036., 11332., 12628., 13924.,
      0.,     0.,     4086.,  4702.,  5318.,  5934.,  11060., 12356., 5870.,
      6550.,  12164., 13588., 6422.,  7166.,  7910.,  8654.,  0.,     0.,
      7782.,  8398.,  9014.,  9630.,  18836., 20132., 9950.,  10630., 20708.,
      22132., 10886., 11630., 12374., 13118., 0.,     0.,     510.,   1318.,
      2126.,  2934.,  4292.,  5972.,  2294.,  3166.,  4628.,  6436.,  2462.,
      3398.,  4334.,  5270.,  0.,     0.,     5358.,  6166.,  6974.,  7782.,
      14372., 16052., 7526.,  8398.,  15476., 17284., 8078.,  9014.,  9950.,
      10886., 0.,     0.,     10836., 12644., 14452., 16260., 29752., 33496.,
      15556., 17492., 31960., 35960., 16660., 18724., 20788., 22852., 0.,
      0.,     6630.,  7630.,  8630.,  9630.,  17684., 19748., 9182.,  10246.,
      18788., 20980., 9734.,  10862., 11990., 13118., 0.,     0.,     12630.,
      13630., 14630., 15630., 30068., 32132., 15566., 16630., 31940., 34132.,
      16502., 17630., 18758., 19886., 0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13.,   14.,   15.,   16.,   17.,   18.,   19.,   20.,   47.,   50.,
      53.,   56.,   34.,   36.,   38.,   40.,   81.,   86.,   91.,   96.,
      51.,   54.,   57.,   60.,   115.,  122.,  129.,  136.,  68.,   72.,
      76.,   80.,   30.,   36.,   42.,   48.,   54.,   60.,   66.,   72.,
      134.,  148.,  162.,  176.,  88.,   96.,   104.,  112.,  202.,  220.,
      238.,  256.,  122.,  132.,  142.,  152.,  270.,  292.,  314.,  336.,
      156.,  168.,  180.,  192.,  65.,   70.,   75.,   80.,   85.,   90.,
      95.,   100.,  183.,  194.,  205.,  216.,  102.,  108.,  114.,  120.,
      217.,  230.,  243.,  256.,  119.,  126.,  133.,  140.,  251.,  266.,
      281.,  296.,  136.,  144.,  152.,  160.,  134.,  148.,  162.,  176.,
      190.,  204.,  218.,  232.,  406.,  436.,  466.,  496.,  224.,  240.,
      256.,  272.,  474.,  508.,  542.,  576.,  258.,  276.,  294.,  312.,
      542.,  580.,  618.,  656.,  292.,  312.,  332.,  352.,  117.,  126.,
      135.,  144.,  153.,  162.,  171.,  180.,  319.,  338.,  357.,  376.,
      170.,  180.,  190.,  200.,  353.,  374.,  395.,  416.,  187.,  198.,
      209.,  220.,  387.,  410.,  433.,  456.,  204.,  216.,  228.,  240.,
      169.,  182.,  195.,  208.,  221.,  234.,  247.,  260.,  455.,  482.,
      509.,  536.,  238.,  252.,  266.,  280.,  489.,  518.,  547.,  576.,
      255.,  270.,  285.,  300.,  523.,  554.,  585.,  616.,  272.,  288.,
      304.,  320.,  342.,  372.,  402.,  432.,  462.,  492.,  522.,  552.,
      950.,  1012., 1074., 1136., 496.,  528.,  560.,  592.,  1018., 1084.,
      1150., 1216., 530.,  564.,  598.,  632.,  1086., 1156., 1226., 1296.,
      564.,  600.,  636.,  672.,  221.,  238.,  255.,  272.,  289.,  306.,
      323.,  340.,  591.,  626.,  661.,  696.,  306.,  324.,  342.,  360.,
      625.,  662.,  699.,  736.,  323.,  342.,  361.,  380.,  659.,  698.,
      737.,  776.,  340.,  360.,  380.,  400.,  446.,  484.,  522.,  560.,
      598.,  636.,  674.,  712.,  1222., 1300., 1378., 1456., 632.,  672.,
      712.,  752.,  1290., 1372., 1454., 1536., 666.,  708.,  750.,  792.,
      1358., 1444., 1530., 1616., 700.,  744.,  788.,  832.,  273.,  294.,
      315.,  336.,  357.,  378.,  399.,  420.,  727.,  770.,  813.,  856.,
      374.,  396.,  418.,  440.,  761.,  806.,  851.,  896.,  391.,  414.,
      437.,  460.,  795.,  842.,  889.,  936.,  408.,  432.,  456.,  480.,
      325.,  350.,  375.,  400.,  425.,  450.,  475.,  500.,  863.,  914.,
      965.,  1016., 442.,  468.,  494.,  520.,  897.,  950.,  1003., 1056.,
      459.,  486.,  513.,  540.,  931.,  986.,  1041., 1096., 476.,  504.,
      532.,  560.,  654.,  708.,  762.,  816.,  870.,  924.,  978.,  1032.,
      1766., 1876., 1986., 2096., 904.,  960.,  1016., 1072., 1834., 1948.,
      2062., 2176., 938.,  996.,  1054., 1112., 1902., 2020., 2138., 2256.,
      972.,  1032., 1092., 1152., 377.,  406.,  435.,  464.,  493.,  522.,
      551.,  580.,  999.,  1058., 1117., 1176., 510.,  540.,  570.,  600.,
      1033., 1094., 1155., 1216., 527.,  558.,  589.,  620.,  1067., 1130.,
      1193., 1256., 544.,  576.,  608.,  640.,  758.,  820.,  882.,  944.,
      1006., 1068., 1130., 1192., 2038., 2164., 2290., 2416., 1040., 1104.,
      1168., 1232., 2106., 2236., 2366., 2496., 1074., 1140., 1206., 1272.,
      2174., 2308., 2442., 2576., 1108., 1176., 1244., 1312., 429.,  462.,
      495.,  528.,  561.,  594.,  627.,  660.,  1135., 1202., 1269., 1336.,
      578.,  612.,  646.,  680.,  1169., 1238., 1307., 1376., 595.,  630.,
      665.,  700.,  1203., 1274., 1345., 1416., 612.,  648.,  684.,  720.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,    4.,    5.,    6.,    7.,    8.,    11.,   14.,   17.,
      20.,  10.,  12.,   14.,   16.,   21.,   26.,   31.,   36.,   15.,   18.,
      21.,  24.,  27.,   30.,   33.,   36.,   0.,    0.,    0.,    0.,    13.,
      14.,  15.,  16.,   17.,   18.,   19.,   20.,   47.,   50.,   53.,   56.,
      34.,  36.,  38.,   40.,   81.,   86.,   91.,   96.,   51.,   54.,   57.,
      60.,  63.,  66.,   69.,   72.,   0.,    0.,    0.,    0.,    29.,   34.,
      39.,  44.,  49.,   54.,   59.,   64.,   124.,  136.,  148.,  160.,  83.,
      90.,  97.,  104.,  192.,  208.,  224.,  240.,  117.,  126.,  135.,  144.,
      153., 162., 171.,  180.,  0.,    0.,    0.,    0.,    52.,   56.,   60.,
      64.,  68.,  72.,   76.,   80.,   149.,  158.,  167.,  176.,  85.,   90.,
      95.,  100., 183.,  194.,  205.,  216.,  102.,  108.,  114.,  120.,  126.,
      132., 138., 144.,  0.,    0.,    0.,    0.,    100.,  104.,  108.,  112.,
      116., 120., 124.,  128.,  257.,  266.,  275.,  284.,  145.,  150.,  155.,
      160., 315., 326.,  337.,  348.,  174.,  180.,  186.,  192.,  198.,  204.,
      210., 216., 0.,    0.,    0.,    0.,    7.,    14.,   21.,   28.,   35.,
      42.,  49.,  56.,   71.,   86.,   101.,  116.,  40.,   48.,   56.,   64.,
      81.,  98.,  115.,  132.,  45.,   54.,   63.,   72.,   81.,   90.,   99.,
      108., 0.,   0.,    0.,    0.,    91.,   98.,   105.,  112.,  119.,  126.,
      133., 140., 251.,  266.,  281.,  296.,  136.,  144.,  152.,  160.,  285.,
      302., 319., 336.,  153.,  162.,  171.,  180.,  189.,  198.,  207.,  216.,
      0.,   0.,   0.,    0.,    185.,  202.,  219.,  236.,  253.,  270.,  287.,
      304., 532., 568.,  604.,  640.,  287.,  306.,  325.,  344.,  600.,  640.,
      680., 720., 321.,  342.,  363.,  384.,  405.,  426.,  447.,  468.,  0.,
      0.,   0.,   0.,    130.,  140.,  150.,  160.,  170.,  180.,  190.,  200.,
      353., 374., 395.,  416.,  187.,  198.,  209.,  220.,  387.,  410.,  433.,
      456., 204., 216.,  228.,  240.,  252.,  264.,  276.,  288.,  0.,    0.,
      0.,   0.,   250.,  260.,  270.,  280.,  290.,  300.,  310.,  320.,  605.,
      626., 647., 668.,  319.,  330.,  341.,  352.,  663.,  686.,  709.,  732.,
      348., 360., 372.,  384.,  396.,  408.,  420.,  432.,  0.,    0.,    0.,
      0.,   13.,  26.,   39.,   52.,   65.,   78.,   91.,   104.,  131.,  158.,
      185., 212., 70.,   84.,   98.,   112.,  141.,  170.,  199.,  228.,  75.,
      90.,  105., 120.,  135.,  150.,  165.,  180.,  0.,    0.,    0.,    0.,
      169., 182., 195.,  208.,  221.,  234.,  247.,  260.,  455.,  482.,  509.,
      536., 238., 252.,  266.,  280.,  489.,  518.,  547.,  576.,  255.,  270.,
      285., 300., 315.,  330.,  345.,  360.,  0.,    0.,    0.,    0.,    341.,
      370., 399., 428.,  457.,  486.,  515.,  544.,  940.,  1000., 1060., 1120.,
      491., 522., 553.,  584.,  1008., 1072., 1136., 1200., 525.,  558.,  591.,
      624., 657., 690.,  723.,  756.,  0.,    0.,    0.,    0.,    208.,  224.,
      240., 256., 272.,  288.,  304.,  320.,  557.,  590.,  623.,  656.,  289.,
      306., 323., 340.,  591.,  626.,  661.,  696.,  306.,  324.,  342.,  360.,
      378., 396., 414.,  432.,  0.,    0.,    0.,    0.,    400.,  416.,  432.,
      448., 464., 480.,  496.,  512.,  953.,  986.,  1019., 1052., 493.,  510.,
      527., 544., 1011., 1046., 1081., 1116., 522.,  540.,  558.,  576.,  594.,
      612., 630., 648.,  0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77.,    83.,    89.,    95.,    101.,   107.,   113.,   119.,   304.,
      324.,   344.,   364.,   235.,   249.,   263.,   277.,   572.,   608.,
      644.,   680.,   369.,   391.,   413.,   435.,   840.,   892.,   944.,
      996.,   503.,   533.,   563.,   593.,   178.,   222.,   266.,   310.,
      354.,   398.,   442.,   486.,   912.,   1016.,  1120.,  1224.,  622.,
      682.,   742.,   802.,   1448.,  1584.,  1720.,  1856.,  890.,   966.,
      1042.,  1118.,  1984.,  2152.,  2320.,  2488.,  1158.,  1250.,  1342.,
      1434.,  485.,   523.,   561.,   599.,   637.,   675.,   713.,   751.,
      1376.,  1460.,  1544.,  1628.,  771.,   817.,   863.,   909.,   1644.,
      1744.,  1844.,  1944.,  905.,   959.,   1013.,  1067.,  1912.,  2028.,
      2144.,  2260.,  1039.,  1101.,  1163.,  1225.,  994.,   1102.,  1210.,
      1318.,  1426.,  1534.,  1642.,  1750.,  3056.,  3288.,  3520.,  3752.,
      1694.,  1818.,  1942.,  2066.,  3592.,  3856.,  4120.,  4384.,  1962.,
      2102.,  2242.,  2382.,  4128.,  4424.,  4720.,  5016.,  2230.,  2386.,
      2542.,  2698.,  893.,   963.,   1033.,  1103.,  1173.,  1243.,  1313.,
      1383.,  2448.,  2596.,  2744.,  2892.,  1307.,  1385.,  1463.,  1541.,
      2716.,  2880.,  3044.,  3208.,  1441.,  1527.,  1613.,  1699.,  2984.,
      3164.,  3344.,  3524.,  1575.,  1669.,  1763.,  1857.,  1301.,  1403.,
      1505.,  1607.,  1709.,  1811.,  1913.,  2015.,  3520.,  3732.,  3944.,
      4156.,  1843.,  1953.,  2063.,  2173.,  3788.,  4016.,  4244.,  4472.,
      1977.,  2095.,  2213.,  2331.,  4056.,  4300.,  4544.,  4788.,  2111.,
      2237.,  2363.,  2489.,  2626.,  2862.,  3098.,  3334.,  3570.,  3806.,
      4042.,  4278.,  7344.,  7832.,  8320.,  8808.,  3838.,  4090.,  4342.,
      4594.,  7880.,  8400.,  8920.,  9440.,  4106.,  4374.,  4642.,  4910.,
      8416.,  8968.,  9520.,  10072., 4374.,  4658.,  4942.,  5226.,  1709.,
      1843.,  1977.,  2111.,  2245.,  2379.,  2513.,  2647.,  4592.,  4868.,
      5144.,  5420.,  2379.,  2521.,  2663.,  2805.,  4860.,  5152.,  5444.,
      5736.,  2513.,  2663.,  2813.,  2963.,  5128.,  5436.,  5744.,  6052.,
      2647.,  2805.,  2963.,  3121.,  3442.,  3742.,  4042.,  4342.,  4642.,
      4942.,  5242.,  5542.,  9488.,  10104., 10720., 11336., 4910.,  5226.,
      5542.,  5858.,  10024., 10672., 11320., 11968., 5178.,  5510.,  5842.,
      6174.,  10560., 11240., 11920., 12600., 5446.,  5794.,  6142.,  6490.,
      2117.,  2283.,  2449.,  2615.,  2781.,  2947.,  3113.,  3279.,  5664.,
      6004.,  6344.,  6684.,  2915.,  3089.,  3263.,  3437.,  5932.,  6288.,
      6644.,  7000.,  3049.,  3231.,  3413.,  3595.,  6200.,  6572.,  6944.,
      7316.,  3183.,  3373.,  3563.,  3753.,  2525.,  2723.,  2921.,  3119.,
      3317.,  3515.,  3713.,  3911.,  6736.,  7140.,  7544.,  7948.,  3451.,
      3657.,  3863.,  4069.,  7004.,  7424.,  7844.,  8264.,  3585.,  3799.,
      4013.,  4227.,  7272.,  7708.,  8144.,  8580.,  3719.,  3941.,  4163.,
      4385.,  5074.,  5502.,  5930.,  6358.,  6786.,  7214.,  7642.,  8070.,
      13776., 14648., 15520., 16392., 7054.,  7498.,  7942.,  8386.,  14312.,
      15216., 16120., 17024., 7322.,  7782.,  8242.,  8702.,  14848., 15784.,
      16720., 17656., 7590.,  8066.,  8542.,  9018.,  2933.,  3163.,  3393.,
      3623.,  3853.,  4083.,  4313.,  4543.,  7808.,  8276.,  8744.,  9212.,
      3987.,  4225.,  4463.,  4701.,  8076.,  8560.,  9044.,  9528.,  4121.,
      4367.,  4613.,  4859.,  8344.,  8844.,  9344.,  9844.,  4255.,  4509.,
      4763.,  5017.,  5890.,  6382.,  6874.,  7366.,  7858.,  8350.,  8842.,
      9334.,  15920., 16920., 17920., 18920., 8126.,  8634.,  9142.,  9650.,
      16456., 17488., 18520., 19552., 8394.,  8918.,  9442.,  9966.,  16992.,
      18056., 19120., 20184., 8662.,  9202.,  9742.,  10282., 3341.,  3603.,
      3865.,  4127.,  4389.,  4651.,  4913.,  5175.,  8880.,  9412.,  9944.,
      10476., 4523.,  4793.,  5063.,  5333.,  9148.,  9696.,  10244., 10792.,
      4657.,  4935.,  5213.,  5491.,  9416.,  9980.,  10544., 11108., 4791.,
      5077.,  5363.,  5649.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  193.,  215.,  237.,  259.,  0.,    0.,
      0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,
      304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,
      644.,  680.,  369.,  391.,  413.,  435.,  457.,  479.,  501.,  523.,
      0.,    0.,    0.,    0.,    172.,  208.,  244.,  280.,  316.,  352.,
      388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,  688.,  740.,
      1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056., 1124., 1192.,
      1260., 1328., 0.,    0.,    0.,    0.,    383.,  413.,  443.,  473.,
      503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312., 637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      955.,  1001., 1047., 1093., 0.,    0.,    0.,    0.,    743.,  773.,
      803.,  833.,  863.,  893.,  923.,  953.,  1924., 1992., 2060., 2128.,
      1093., 1131., 1169., 1207., 2384., 2468., 2552., 2636., 1323., 1369.,
      1415., 1461., 1507., 1553., 1599., 1645., 0.,    0.,    0.,    0.,
      41.,   95.,   149.,  203.,  257.,  311.,  365.,  419.,  520.,  636.,
      752.,  868.,  295.,  357.,  419.,  481.,  596.,  728.,  860.,  992.,
      333.,  403.,  473.,  543.,  613.,  683.,  753.,  823.,  0.,    0.,
      0.,    0.,    689.,  743.,  797.,  851.,  905.,  959.,  1013., 1067.,
      1912., 2028., 2144., 2260., 1039., 1101., 1163., 1225., 2180., 2312.,
      2444., 2576., 1173., 1243., 1313., 1383., 1453., 1523., 1593., 1663.,
      0.,    0.,    0.,    0.,    1396., 1528., 1660., 1792., 1924., 2056.,
      2188., 2320., 4052., 4332., 4612., 4892., 2192., 2340., 2488., 2636.,
      4588., 4900., 5212., 5524., 2460., 2624., 2788., 2952., 3116., 3280.,
      3444., 3608., 0.,    0.,    0.,    0.,    995.,  1073., 1151., 1229.,
      1307., 1385., 1463., 1541., 2716., 2880., 3044., 3208., 1441., 1527.,
      1613., 1699., 2984., 3164., 3344., 3524., 1575., 1669., 1763., 1857.,
      1951., 2045., 2139., 2233., 0.,    0.,    0.,    0.,    1931., 2009.,
      2087., 2165., 2243., 2321., 2399., 2477., 4684., 4848., 5012., 5176.,
      2473., 2559., 2645., 2731., 5144., 5324., 5504., 5684., 2703., 2797.,
      2891., 2985., 3079., 3173., 3267., 3361., 0.,    0.,    0.,    0.,
      77.,   179.,  281.,  383.,  485.,  587.,  689.,  791.,  976.,  1188.,
      1400., 1612., 523.,  633.,  743.,  853.,  1052., 1280., 1508., 1736.,
      561.,  679.,  797.,  915.,  1033., 1151., 1269., 1387., 0.,    0.,
      0.,    0.,    1301., 1403., 1505., 1607., 1709., 1811., 1913., 2015.,
      3520., 3732., 3944., 4156., 1843., 1953., 2063., 2173., 3788., 4016.,
      4244., 4472., 1977., 2095., 2213., 2331., 2449., 2567., 2685., 2803.,
      0.,    0.,    0.,    0.,    2620., 2848., 3076., 3304., 3532., 3760.,
      3988., 4216., 7268., 7740., 8212., 8684., 3800., 4044., 4288., 4532.,
      7804., 8308., 8812., 9316., 4068., 4328., 4588., 4848., 5108., 5368.,
      5628., 5888., 0.,    0.,    0.,    0.,    1607., 1733., 1859., 1985.,
      2111., 2237., 2363., 2489., 4324., 4584., 4844., 5104., 2245., 2379.,
      2513., 2647., 4592., 4868., 5144., 5420., 2379., 2521., 2663., 2805.,
      2947., 3089., 3231., 3373., 0.,    0.,    0.,    0.,    3119., 3245.,
      3371., 3497., 3623., 3749., 3875., 4001., 7444., 7704., 7964., 8224.,
      3853., 3987., 4121., 4255., 7904., 8180., 8456., 8732., 4083., 4225.,
      4367., 4509., 4651., 4793., 4935., 5077., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      510.,    550.,    590.,    630.,    670.,   710.,   750.,   790.,
      2148.,   2292.,   2436.,   2580.,   1734.,  1838.,  1942.,  2046.,
      4276.,   4548.,   4820.,   5092.,   2798.,  2966.,  3134.,  3302.,
      6404.,   6804.,   7204.,   7604.,   3862.,  4094.,  4326.,  4558.,
      1180.,   1516.,   1852.,   2188.,   2524.,  2860.,  3196.,  3532.,
      6664.,   7464.,   8264.,   9064.,   4652.,  5116.,  5580.,  6044.,
      10920.,  11976.,  13032.,  14088.,  6780.,  7372.,  7964.,  8556.,
      15176.,  16488.,  17800.,  19112.,  8908.,  9628.,  10348., 11068.,
      3742.,   4038.,   4334.,   4630.,   4926.,  5222.,  5518.,  5814.,
      10660.,  11316.,  11972.,  12628.,  5990.,  6350.,  6710.,  7070.,
      12788.,  13572.,  14356.,  15140.,  7054.,  7478.,  7902.,  8326.,
      14916.,  15828.,  16740.,  17652.,  8118.,  8606.,  9094.,  9582.,
      7644.,   8492.,   9340.,   10188.,  11036., 11884., 12732., 13580.,
      23688.,  25512.,  27336.,  29160.,  13164., 14140., 15116., 16092.,
      27944.,  30024.,  32104.,  34184.,  15292., 16396., 17500., 18604.,
      32200.,  34536.,  36872.,  39208.,  17420., 18652., 19884., 21116.,
      6974.,   7526.,   8078.,   8630.,   9182.,  9734.,  10286., 10838.,
      19172.,  20340.,  21508.,  22676.,  10246., 10862., 11478., 12094.,
      21300.,  22596.,  23892.,  25188.,  11310., 11990., 12670., 13350.,
      23428.,  24852.,  26276.,  27700.,  12374., 13118., 13862., 14606.,
      10206.,  11014.,  11822.,  12630.,  13438., 14246., 15054., 15862.,
      27684.,  29364.,  31044.,  32724.,  14502., 15374., 16246., 17118.,
      29812.,  31620.,  33428.,  35236.,  15566., 16502., 17438., 18374.,
      31940.,  33876.,  35812.,  37748.,  16630., 17630., 18630., 19630.,
      20572.,  22444.,  24316.,  26188.,  28060., 29932., 31804., 33676.,
      57736.,  61608.,  65480.,  69352.,  30188., 32188., 34188., 36188.,
      61992.,  66120.,  70248.,  74376.,  32316., 34444., 36572., 38700.,
      66248.,  70632.,  75016.,  79400.,  34444., 36700., 38956., 41212.,
      13438.,  14502.,  15566.,  16630.,  17694., 18758., 19822., 20886.,
      36196.,  38388.,  40580.,  42772.,  18758., 19886., 21014., 22142.,
      38324.,  40644.,  42964.,  45284.,  19822., 21014., 22206., 23398.,
      40452.,  42900.,  45348.,  47796.,  20886., 22142., 23398., 24654.,
      27036.,  29420.,  31804.,  34188.,  36572., 38956., 41340., 43724.,
      74760.,  79656.,  84552.,  89448.,  38700., 41212., 43724., 46236.,
      79016.,  84168.,  89320.,  94472.,  40828., 43468., 46108., 48748.,
      83272.,  88680.,  94088.,  99496.,  42956., 45724., 48492., 51260.,
      16670.,  17990.,  19310.,  20630.,  21950., 23270., 24590., 25910.,
      44708.,  47412.,  50116.,  52820.,  23014., 24398., 25782., 27166.,
      46836.,  49668.,  52500.,  55332.,  24078., 25526., 26974., 28422.,
      48964.,  51924.,  54884.,  57844.,  25142., 26654., 28166., 29678.,
      19902.,  21478.,  23054.,  24630.,  26206., 27782., 29358., 30934.,
      53220.,  56436.,  59652.,  62868.,  27270., 28910., 30550., 32190.,
      55348.,  58692.,  62036.,  65380.,  28334., 30038., 31742., 33446.,
      57476.,  60948.,  64420.,  67892.,  29398., 31166., 32934., 34702.,
      39964.,  43372.,  46780.,  50188.,  53596., 57004., 60412., 63820.,
      108808., 115752., 122696., 129640., 55724., 59260., 62796., 66332.,
      113064., 120264., 127464., 134664., 57852., 61516., 65180., 68844.,
      117320., 124776., 132232., 139688., 59980., 63772., 67564., 71356.,
      23134.,  24966.,  26798.,  28630.,  30462., 32294., 34126., 35958.,
      61732.,  65460.,  69188.,  72916.,  31526., 33422., 35318., 37214.,
      63860.,  67716.,  71572.,  75428.,  32590., 34550., 36510., 38470.,
      65988.,  69972.,  73956.,  77940.,  33654., 35678., 37702., 39726.,
      46428.,  50348.,  54268.,  58188.,  62108., 66028., 69948., 73868.,
      125832., 133800., 141768., 149736., 64236., 68284., 72332., 76380.,
      130088., 138312., 146536., 154760., 66364., 70540., 74716., 78892.,
      134344., 142824., 151304., 159784., 68492., 72796., 77100., 81404.,
      26366.,  28454.,  30542.,  32630.,  34718., 36806., 38894., 40982.,
      70244.,  74484.,  78724.,  82964.,  35782., 37934., 40086., 42238.,
      72372.,  76740.,  81108.,  85476.,  36846., 39062., 41278., 43494.,
      74500.,  78996.,  83492.,  87988.,  37910., 40190., 42470., 44750.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  1454.,  1622.,  1790.,
      1958.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,   630.,
      670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,  1734.,
      1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,  2966.,
      3134.,  3302.,  3470.,  3638.,  3806.,  3974.,  0.,     0.,     0.,
      0.,     1140.,  1412.,  1684.,  1956.,  2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,  7416.,  8088.,  4356.,  4756.,  5156.,  5556.,  10328.,
      11256., 12184., 13112., 6484.,  7012.,  7540.,  8068.,  8596.,  9124.,
      9652.,  10180., 0.,     0.,     0.,     0.,     2934.,  3166.,  3398.,
      3630.,  3862.,  4094.,  4326.,  4558.,  8532.,  9060.,  9588.,  10116.,
      4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,
      6350.,  6710.,  7070.,  7430.,  7790.,  8150.,  8510.,  0.,     0.,
      0.,     0.,     5718.,  5950.,  6182.,  6414.,  6646.,  6878.,  7110.,
      7342.,  14868., 15396., 15924., 16452., 8478.,  8774.,  9070.,  9366.,
      18532., 19188., 19844., 20500., 10310., 10670., 11030., 11390., 11750.,
      12110., 12470., 12830., 0.,     0.,     0.,     0.,     270.,   694.,
      1118.,  1542.,  1966.,  2390.,  2814.,  3238.,  3972.,  4884.,  5796.,
      6708.,  2262.,  2750.,  3238.,  3726.,  4564.,  5604.,  6644.,  7684.,
      2558.,  3110.,  3662.,  4214.,  4766.,  5318.,  5870.,  6422.,  0.,
      0.,     0.,     0.,     5358.,  5782.,  6206.,  6630.,  7054.,  7478.,
      7902.,  8326.,  14916., 15828., 16740., 17652., 8118.,  8606.,  9094.,
      9582.,  17044., 18084., 19124., 20164., 9182.,  9734.,  10286., 10838.,
      11390., 11942., 12494., 13046., 0.,     0.,     0.,     0.,     10836.,
      11876., 12916., 13956., 14996., 16036., 17076., 18116., 31608., 33816.,
      36024., 38232., 17124., 18292., 19460., 20628., 35864., 38328., 40792.,
      43256., 19252., 20548., 21844., 23140., 24436., 25732., 27028., 28324.,
      0.,     0.,     0.,     0.,     7782.,  8398.,  9014.,  9630.,  10246.,
      10862., 11478., 12094., 21300., 22596., 23892., 25188., 11310., 11990.,
      12670., 13350., 23428., 24852., 26276., 27700., 12374., 13118., 13862.,
      14606., 15350., 16094., 16838., 17582., 0.,     0.,     0.,     0.,
      15174., 15790., 16406., 17022., 17638., 18254., 18870., 19486., 36852.,
      38148., 39444., 40740., 19470., 20150., 20830., 21510., 40516., 41940.,
      43364., 44788., 21302., 22046., 22790., 23534., 24278., 25022., 25766.,
      26510., 0.,     0.,     0.,     0.,     510.,   1318.,  2126.,  2934.,
      3742.,  4550.,  5358.,  6166.,  7524.,  9204.,  10884., 12564., 4038.,
      4910.,  5782.,  6654.,  8116.,  9924.,  11732., 13540., 4334.,  5270.,
      6206.,  7142.,  8078.,  9014.,  9950.,  10886., 0.,     0.,     0.,
      0.,     10206., 11014., 11822., 12630., 13438., 14246., 15054., 15862.,
      27684., 29364., 31044., 32724., 14502., 15374., 16246., 17118., 29812.,
      31620., 33428., 35236., 15566., 16502., 17438., 18374., 19310., 20246.,
      21182., 22118., 0.,     0.,     0.,     0.,     20532., 22340., 24148.,
      25956., 27764., 29572., 31380., 33188., 57144., 60888., 64632., 68376.,
      29892., 31828., 33764., 35700., 61400., 65400., 69400., 73400., 32020.,
      34084., 36148., 38212., 40276., 42340., 44404., 46468., 0.,     0.,
      0.,     0.,     12630., 13630., 14630., 15630., 16630., 17630., 18630.,
      19630., 34068., 36132., 38196., 40260., 17694., 18758., 19822., 20886.,
      36196., 38388., 40580., 42772., 18758., 19886., 21014., 22142., 23270.,
      24398., 25526., 26654., 0.,     0.,     0.,     0.,     24630., 25630.,
      26630., 27630., 28630., 29630., 30630., 31630., 58836., 60900., 62964.,
      65028., 30462., 31526., 32590., 33654., 62500., 64692., 66884., 69076.,
      32294., 33422., 34550., 35678., 36806., 37934., 39062., 40190., 0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2.,   5.,   4.,   9.,   6.,   5.,   14.,  10.,  24.,  15.,  16.,  40.,
      26.,  60.,  36.,  20.,  44.,  25.,  54.,  30.,  46.,  100., 56.,  120.,
      66.,  35.,  74.,  40.,  84.,  45.,  20.,  41.,  22.,  45.,  24.,  50.,
      104., 55.,  114., 60.,  106., 220., 116., 240., 126., 65.,  134., 70.,
      144., 75.,  136., 280., 146., 300., 156., 80.,  164., 85.,  174., 90.,
      38.,  77.,  40.,  81.,  42.,  95.,  194., 100., 204., 105., 196., 400.,
      206., 420., 216., 110., 224., 115., 234., 120., 226., 460., 236., 480.,
      246., 125., 254., 130., 264., 135.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,  5.,  4.,   6.,   4.,  5.,   14.,  10.,  12.,  10., 14., 36.,
      24.,  30., 12., 15.,  34.,  20., 24.,  21.,  24.,  55.,  32., 36., 0.,
      0.,   0.,  0.,  0.,   5.,   10., 21.,  12.,  18.,  20.,  25., 54., 30.,
      36.,  42., 54., 116., 64.,  78., 28.,  35.,  74.,  40.,  48., 49., 56.,
      119., 64., 72., 0.,   0.,   0.,  0.,   0.,   9.,   18.,  37., 20., 30.,
      36.,  45., 94., 50.,  60.,  74., 94.,  196., 104., 126., 44., 55., 114.,
      60.,  72., 77., 88.,  183., 96., 108., 0.,   0.,   0.,   0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11.,   28.,   25.,   56.,   39.,   29.,  88.,   67.,  164.,  105.,
      100.,  260.,  176.,  412.,  252.,  143., 316.,  181., 392.,  219.,
      328.,  716.,  404.,  868.,  480.,  257., 544.,  295., 620.,  333.,
      137.,  280.,  151.,  308.,  165.,  371., 772.,  409., 848.,  447.,
      784.,  1628., 860.,  1780., 936.,  485., 1000., 523., 1076., 561.,
      1012., 2084., 1088., 2236., 1164., 599., 1228., 637., 1304., 675.,
      263.,  532.,  277.,  560.,  291.,  713., 1456., 751., 1532., 789.,
      1468., 2996., 1544., 3148., 1620., 827., 1684., 865., 1760., 903.,
      1696., 3452., 1772., 3604., 1848., 941., 1912., 979., 1988., 1017.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,  28.,  25.,  39.,  23.,  29.,  88.,  67.,  81.,  58.,   86.,
      232.,  162., 206., 83.,  105., 240., 143., 173., 149., 171., 396.,  233.,
      263.,  0.,   0.,   0.,   0.,   0.,   29.,  67.,  140., 81.,  127.,  143.,
      181.,  392., 219., 265., 298., 390., 840., 466., 574., 203., 257.,  544.,
      295.,  357., 365., 419., 892., 481., 543., 0.,   0.,   0.,   0.,    0.,
      53.,   123., 252., 137., 215., 263., 333., 696., 371., 449., 538.,  694.,
      1448., 770., 942., 323., 409., 848., 447., 541., 581., 667., 1388., 729.,
      823.,  0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70.,    180.,   174.,   388.,   278.,   190.,   612.,   486.,   1204.,
      782.,   692.,   1848.,  1284.,  3032.,  1876.,  1078.,  2388.,  1374.,
      2980.,  1670.,  2468.,  5400.,  3060.,  6584.,  3652.,  1966.,  4164.,
      2262.,  4756.,  2558.,  1006.,  2052.,  1110.,  2260.,  1214.,  2854.,
      5940.,  3150.,  6532.,  3446.,  6020.,  12504., 6612.,  13688., 7204.,
      3742.,  7716.,  4038.,  8308.,  4334.,  7796.,  16056., 8388.,  17240.,
      8980.,  4630.,  9492.,  4926.,  10084., 5222.,  1942.,  3924.,  2046.,
      4132.,  2150.,  5518.,  11268., 5814.,  11860., 6110.,  11348., 23160.,
      11940., 24344., 12532., 6406.,  13044., 6702.,  13636., 6998.,  13124.,
      26712., 13716., 27896., 14308., 7294.,  14820., 7590.,  15412., 7886.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,   174.,  278.,  150.,  190.,  612.,  486.,  590.,
      380.,  588.,  1640.,  1180., 1516., 614.,  782.,  1796., 1078., 1310.,
      1118., 1286., 2996.,  1774., 2006., 0.,    0.,    0.,    0.,    0.,
      190.,  486.,  1012.,  590.,  950.,  1078., 1374., 2980., 1670., 2030.,
      2236., 2956., 6376.,  3548., 4396., 1542., 1966., 4164., 2262., 2750.,
      2814., 3238., 6900.,  3726., 4214., 0.,    0.,    0.,    0.,    0.,
      350.,  902.,  1844.,  1006., 1622., 2006., 2558., 5348., 2854., 3470.,
      4092., 5324., 11112., 5916., 7276., 2470., 3150., 6532., 3446., 4190.,
      4510., 5190., 10804., 5678., 6422., 0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,  9.,   10.,
      25.,  28.,  18.,  20.,  43.,  48.,  27.,  30.,  27.,  32.,  68.,  80.,
      45.,  52.,  104., 120., 63.,  72.,  36.,  40.,  79.,  88.,  45.,  50.,
      97.,  108., 54.,  60.,  81.,  92.,  176., 200., 99.,  112., 212., 240.,
      117., 132., 63.,  70.,  133., 148., 72.,  80.,  151., 168., 81.,  90.,
      30.,  40.,  61.,  82.,  33.,  44.,  67.,  90.,  36.,  48.,  90.,  100.,
      187., 208., 99.,  110., 205., 228., 108., 120., 189., 212., 392., 440.,
      207., 232., 428., 480., 225., 252., 117., 130., 241., 268., 126., 140.,
      259., 288., 135., 150., 243., 272., 500., 560., 261., 292., 536., 600.,
      279., 312., 144., 160., 295., 328., 153., 170., 313., 348., 162., 180.,
      57.,  76.,  115., 154., 60.,  80.,  121., 162., 63.,  84.,  171., 190.,
      349., 388., 180., 200., 367., 408., 189., 210., 351., 392., 716., 800.,
      369., 412., 752., 840., 387., 432., 198., 220., 403., 448., 207., 230.,
      421., 468., 216., 240., 405., 452., 824., 920., 423., 472., 860., 960.,
      441., 492., 225., 250., 457., 508., 234., 260., 475., 528., 243., 270.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   10.,  12.,  7.,   8.,
      9.,   10.,  25.,  28.,  18.,  20.,  22.,  24.,  16.,  20.,  24.,  28.,
      62.,  72.,  42.,  48.,  54.,  60.,  21.,  24.,  27.,  30.,  61.,  68.,
      36.,  40.,  44.,  48.,  39.,  42.,  45.,  48.,  103., 110., 60.,  64.,
      68.,  72.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      5.,   10.,  15.,  20.,  31.,  42.,  18.,  24.,  30.,  36.,  35.,  40.,
      45.,  50.,  97.,  108., 54.,  60.,  66.,  72.,  72.,  84.,  96.,  108.,
      206., 232., 114., 128., 142., 156., 49.,  56.,  63.,  70.,  133., 148.,
      72.,  80.,  88.,  96.,  91.,  98.,  105., 112., 223., 238., 120., 128.,
      136., 144., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      9.,   18.,  27.,  36.,  55.,  74.,  30.,  40.,  50.,  60.,  63.,  72.,
      81.,  90.,  169., 188., 90.,  100., 110., 120., 128., 148., 168., 188.,
      350., 392., 186., 208., 230., 252., 77.,  88.,  99.,  110., 205., 228.,
      108., 120., 132., 144., 143., 154., 165., 176., 343., 366., 180., 192.,
      204., 216., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,  61.,   83.,
      53.,   59.,   160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,
      172.,  208.,  452.,  540.,  312.,  364.,  732.,  852.,  452.,  520.,
      263.,  293.,  580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,
      592.,  676.,  1292., 1476., 732.,  832.,  1572., 1788., 872.,  988.,
      473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272., 613.,  683.,
      215.,  293.,  436.,  600.,  237.,  323.,  480.,  660.,  259.,  353.,
      683.,  761.,  1420., 1584., 753.,  839.,  1560., 1740., 823.,  917.,
      1432., 1612., 2972., 3348., 1572., 1768., 3252., 3660., 1712., 1924.,
      893.,  995.,  1840., 2052., 963.,  1073., 1980., 2208., 1033., 1151.,
      1852., 2080., 3812., 4284., 1992., 2236., 4092., 4596., 2132., 2392.,
      1103., 1229., 2260., 2520., 1173., 1307., 2400., 2676., 1243., 1385.,
      413.,  563.,  832.,  1140., 435.,  593.,  876.,  1200., 457.,  623.,
      1313., 1463., 2680., 2988., 1383., 1541., 2820., 3144., 1453., 1619.,
      2692., 3016., 5492., 6156., 2832., 3172., 5772., 6468., 2972., 3328.,
      1523., 1697., 3100., 3456., 1593., 1775., 3240., 3612., 1663., 1853.,
      3112., 3484., 6332., 7092., 3252., 3640., 6612., 7404., 3392., 3796.,
      1733., 1931., 3520., 3924., 1803., 2009., 3660., 4080., 1873., 2087.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   67.,   81.,
      41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,  151.,  165.,
      94.,   122.,  150.,  178.,  408.,  480.,  290.,  334.,  378.,  422.,
      149.,  171.,  193.,  215.,  440.,  492.,  263.,  293.,  323.,  353.,
      281.,  303.,  325.,  347.,  752.,  804.,  443.,  473.,  503.,  533.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      29.,   67.,   105.,  143.,  216.,  300.,  127.,  173.,  219.,  265.,
      257.,  295.,  333.,  371.,  720.,  804.,  403.,  449.,  495.,  541.,
      526.,  618.,  710.,  802.,  1528., 1728., 850.,  958.,  1066., 1174.,
      365.,  419.,  473.,  527.,  1000., 1116., 543.,  605.,  667.,  729.,
      689.,  743.,  797.,  851.,  1696., 1812., 915.,  977.,  1039., 1101.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      53.,   123.,  193.,  263.,  392.,  540.,  215.,  293.,  371.,  449.,
      473.,  543.,  613.,  683.,  1280., 1428., 683.,  761.,  839.,  917.,
      958.,  1114., 1270., 1426., 2648., 2976., 1410., 1582., 1754., 1926.,
      581.,  667.,  753.,  839.,  1560., 1740., 823.,  917.,  1011., 1105.,
      1097., 1183., 1269., 1355., 2640., 2820., 1387., 1481., 1575., 1669.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      110.,   150.,   260.,   404.,   278.,   382.,   596.,   868.,   446.,
      614.,   350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,
      1454.,  1622.,  1204.,  1476.,  3256.,  3928.,  2308.,  2708.,  5464.,
      6392.,  3412.,  3940.,  2006.,  2238.,  4436.,  4964.,  2558.,  2854.,
      5540.,  6196.,  3110.,  3470.,  4516.,  5172.,  9880.,  11320., 5620.,
      6404.,  12088., 13784., 6724.,  7636.,  3662.,  4086.,  7748.,  8660.,
      4214.,  4702.,  8852.,  9892.,  4766.,  5318.,  1622.,  2238.,  3284.,
      4580.,  1790.,  2470.,  3620.,  5044.,  1958.,  2702.,  5318.,  5934.,
      11060., 12356., 5870.,  6550.,  12164., 13588., 6422.,  7166.,  11140.,
      12564., 23128., 26104., 12244., 13796., 25336., 28568., 13348., 15028.,
      6974.,  7782.,  14372., 16052., 7526.,  8398.,  15476., 17284., 8078.,
      9014.,  14452., 16260., 29752., 33496., 15556., 17492., 31960., 35960.,
      16660., 18724., 8630.,  9630.,  17684., 19748., 9182.,  10246., 18788.,
      20980., 9734.,  10862., 3134.,  4326.,  6308.,  8756.,  3302.,  4558.,
      6644.,  9220.,  3470.,  4790.,  10286., 11478., 20996., 23444., 10838.,
      12094., 22100., 24676., 11390., 12710., 21076., 23652., 43000., 48280.,
      22180., 24884., 45208., 50744., 23284., 26116., 11942., 13326., 24308.,
      27140., 12494., 13942., 25412., 28372., 13046., 14558., 24388., 27348.,
      49624., 55672., 25492., 28580., 51832., 58136., 26596., 29812., 13598.,
      15174., 27620., 30836., 14150., 15790., 28724., 32068., 14702., 16406.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   486.,
      590.,   270.,   310.,   350.,   390.,   1124.,  1268.,  902.,   1006.,
      1110.,  1214.,  620.,   828.,   1036.,  1244.,  2920.,  3464.,  2140.,
      2476.,  2812.,  3148.,  1118.,  1286.,  1454.,  1622.,  3332.,  3732.,
      2006.,  2238.,  2470.,  2702.,  2126.,  2294.,  2462.,  2630.,  5732.,
      6132.,  3398.,  3630.,  3862.,  4094.,  0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     190.,   486.,   782.,
      1078.,  1604.,  2260.,  950.,   1310.,  1670.,  2030.,  1966.,  2262.,
      2558.,  2854.,  5540.,  6196.,  3110.,  3470.,  3830.,  4190.,  4012.,
      4732.,  5452.,  6172.,  11752., 13320., 6556.,  7404.,  8252.,  9100.,
      2814.,  3238.,  3662.,  4086.,  7748.,  8660.,  4214.,  4702.,  5190.,
      5678.,  5358.,  5782.,  6206.,  6630.,  13220., 14132., 7142.,  7630.,
      8118.,  8606.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     350.,   902.,   1454.,  2006.,  2948.,  4116.,
      1622.,  2238.,  2854.,  3470.,  3662.,  4214.,  4766.,  5318.,  9956.,
      11124., 5318.,  5934.,  6550.,  7166.,  7404.,  8636.,  9868.,  11100.,
      20584., 23176., 10972., 12332., 13692., 15052., 4510.,  5190.,  5870.,
      6550.,  12164., 13588., 6422.,  7166.,  7910.,  8654.,  8590.,  9270.,
      9950.,  10630., 20708., 22132., 10886., 11630., 12374., 13118., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   6.,   7.,    8.,    11.,   14.,   17.,   20.,   10.,  12.,
      14.,  16.,  21.,   26.,   31.,   36.,   15.,   18.,   21.,  24.,
      17.,  18.,  19.,   20.,   47.,   50.,   53.,   56.,   34.,  36.,
      38.,  40.,  81.,   86.,   91.,   96.,   51.,   54.,   57.,  60.,
      49.,  54.,  59.,   64.,   124.,  136.,  148.,  160.,  83.,  90.,
      97.,  104., 192.,  208.,  224.,  240.,  117.,  126.,  135., 144.,
      68.,  72.,  76.,   80.,   149.,  158.,  167.,  176.,  85.,  90.,
      95.,  100., 183.,  194.,  205.,  216.,  102.,  108.,  114., 120.,
      151., 162., 173.,  184.,  328.,  352.,  376.,  400.,  185., 198.,
      211., 224., 396.,  424.,  452.,  480.,  219.,  234.,  249., 264.,
      119., 126., 133.,  140.,  251.,  266.,  281.,  296.,  136., 144.,
      152., 160., 285.,  302.,  319.,  336.,  153.,  162.,  171., 180.,
      50.,  60.,  70.,   80.,   101.,  122.,  143.,  164.,  55.,  66.,
      77.,  88.,  111.,  134.,  157.,  180.,  60.,   72.,   84.,  96.,
      170., 180., 190.,  200.,  353.,  374.,  395.,  416.,  187., 198.,
      209., 220., 387.,  410.,  433.,  456.,  204.,  216.,  228., 240.,
      355., 378., 401.,  424.,  736.,  784.,  832.,  880.,  389., 414.,
      439., 464., 804.,  856.,  908.,  960.,  423.,  450.,  477., 504.,
      221., 234., 247.,  260.,  455.,  482.,  509.,  536.,  238., 252.,
      266., 280., 489.,  518.,  547.,  576.,  255.,  270.,  285., 300.,
      457., 486., 515.,  544.,  940.,  1000., 1060., 1120., 491., 522.,
      553., 584., 1008., 1072., 1136., 1200., 525.,  558.,  591., 624.,
      272., 288., 304.,  320.,  557.,  590.,  623.,  656.,  289., 306.,
      323., 340., 591.,  626.,  661.,  696.,  306.,  324.,  342., 360.,
      95.,  114., 133.,  152.,  191.,  230.,  269.,  308.,  100., 120.,
      140., 160., 201.,  242.,  283.,  324.,  105.,  126.,  147., 168.,
      323., 342., 361.,  380.,  659.,  698.,  737.,  776.,  340., 360.,
      380., 400., 693.,  734.,  775.,  816.,  357.,  378.,  399., 420.,
      661., 702., 743.,  784.,  1348., 1432., 1516., 1600., 695., 738.,
      781., 824., 1416., 1504., 1592., 1680., 729.,  774.,  819., 864.,
      374., 396., 418.,  440.,  761.,  806.,  851.,  896.,  391., 414.,
      437., 460., 795.,  842.,  889.,  936.,  408.,  432.,  456., 480.,
      763., 810., 857.,  904.,  1552., 1648., 1744., 1840., 797., 846.,
      895., 944., 1620., 1720., 1820., 1920., 831.,  882.,  933., 984.,
      425., 450., 475.,  500.,  863.,  914.,  965.,  1016., 442., 468.,
      494., 520., 897.,  950.,  1003., 1056., 459.,  486.,  513., 540.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  13.,  14.,  15.,  16.,
      17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,  34.,  36.,  38.,  40.,
      42.,  44.,  46.,  48.,  28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,
      114., 124., 134., 144., 78.,  84.,  90.,  96.,  102., 108., 114., 120.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  75.,  78.,  81.,  84.,
      87.,  90.,  93.,  96.,  199., 206., 213., 220., 116., 120., 124., 128.,
      132., 136., 140., 144., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      5.,   10.,  15.,  20.,  25.,  30.,  35.,  40.,  51.,  62.,  73.,  84.,
      30.,  36.,  42.,  48.,  54.,  60.,  66.,  72.,  65.,  70.,  75.,  80.,
      85.,  90.,  95.,  100., 183., 194., 205., 216., 102., 108., 114., 120.,
      126., 132., 138., 144., 132., 144., 156., 168., 180., 192., 204., 216.,
      386., 412., 438., 464., 214., 228., 242., 256., 270., 284., 298., 312.,
      91.,  98.,  105., 112., 119., 126., 133., 140., 251., 266., 281., 296.,
      136., 144., 152., 160., 168., 176., 184., 192., 175., 182., 189., 196.,
      203., 210., 217., 224., 431., 446., 461., 476., 232., 240., 248., 256.,
      264., 272., 280., 288., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      9.,   18.,  27.,  36.,  45.,  54.,  63.,  72.,  91.,  110., 129., 148.,
      50.,  60.,  70.,  80.,  90.,  100., 110., 120., 117., 126., 135., 144.,
      153., 162., 171., 180., 319., 338., 357., 376., 170., 180., 190., 200.,
      210., 220., 230., 240., 236., 256., 276., 296., 316., 336., 356., 376.,
      658., 700., 742., 784., 350., 372., 394., 416., 438., 460., 482., 504.,
      143., 154., 165., 176., 187., 198., 209., 220., 387., 410., 433., 456.,
      204., 216., 228., 240., 252., 264., 276., 288., 275., 286., 297., 308.,
      319., 330., 341., 352., 663., 686., 709., 732., 348., 360., 372., 384.,
      396., 408., 420., 432., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,    35.,    41.,    47.,    64.,    84.,    104.,   124.,   67.,
      81.,    95.,    109.,   140.,   176.,   212.,   248.,   105.,   127.,
      149.,   171.,   101.,   107.,   113.,   119.,   304.,   324.,   344.,
      364.,   235.,   249.,   263.,   277.,   572.,   608.,   644.,   680.,
      369.,   391.,   413.,   435.,   316.,   352.,   388.,   424.,   836.,
      924.,   1012.,  1100.,  584.,   636.,   688.,   740.,   1372.,  1492.,
      1612.,  1732.,  852.,   920.,   988.,   1056.,  503.,   533.,   563.,
      593.,   1108.,  1176.,  1244.,  1312.,  637.,   675.,   713.,   751.,
      1376.,  1460.,  1544.,  1628.,  771.,   817.,   863.,   909.,   1120.,
      1204.,  1288.,  1372.,  2444.,  2628.,  2812.,  2996.,  1388.,  1488.,
      1588.,  1688.,  2980.,  3196.,  3412.,  3628.,  1656.,  1772.,  1888.,
      2004.,  905.,   959.,   1013.,  1067.,  1912.,  2028.,  2144.,  2260.,
      1039.,  1101.,  1163.,  1225.,  2180.,  2312.,  2444.,  2576.,  1173.,
      1243.,  1313.,  1383.,  371.,   449.,   527.,   605.,   748.,   912.,
      1076.,  1240.,  409.,   495.,   581.,   667.,   824.,   1004.,  1184.,
      1364.,  447.,   541.,   635.,   729.,   1307.,  1385.,  1463.,  1541.,
      2716.,  2880.,  3044.,  3208.,  1441.,  1527.,  1613.,  1699.,  2984.,
      3164.,  3344.,  3524.,  1575.,  1669.,  1763.,  1857.,  2728.,  2908.,
      3088.,  3268.,  5660.,  6036.,  6412.,  6788.,  2996.,  3192.,  3388.,
      3584.,  6196.,  6604.,  7012.,  7420.,  3264.,  3476.,  3688.,  3900.,
      1709.,  1811.,  1913.,  2015.,  3520.,  3732.,  3944.,  4156.,  1843.,
      1953.,  2063.,  2173.,  3788.,  4016.,  4244.,  4472.,  1977.,  2095.,
      2213.,  2331.,  3532.,  3760.,  3988.,  4216.,  7268.,  7740.,  8212.,
      8684.,  3800.,  4044.,  4288.,  4532.,  7804.,  8308.,  8812.,  9316.,
      4068.,  4328.,  4588.,  4848.,  2111.,  2237.,  2363.,  2489.,  4324.,
      4584.,  4844.,  5104.,  2245.,  2379.,  2513.,  2647.,  4592.,  4868.,
      5144.,  5420.,  2379.,  2521.,  2663.,  2805.,  713.,   863.,   1013.,
      1163.,  1432.,  1740.,  2048.,  2356.,  751.,   909.,   1067.,  1225.,
      1508.,  1832.,  2156.,  2480.,  789.,   955.,   1121.,  1287.,  2513.,
      2663.,  2813.,  2963.,  5128.,  5436.,  5744.,  6052.,  2647.,  2805.,
      2963.,  3121.,  5396.,  5720.,  6044.,  6368.,  2781.,  2947.,  3113.,
      3279.,  5140.,  5464.,  5788.,  6112.,  10484., 11148., 11812., 12476.,
      5408.,  5748.,  6088.,  6428.,  11020., 11716., 12412., 13108., 5676.,
      6032.,  6388.,  6744.,  2915.,  3089.,  3263.,  3437.,  5932.,  6288.,
      6644.,  7000.,  3049.,  3231.,  3413.,  3595.,  6200.,  6572.,  6944.,
      7316.,  3183.,  3373.,  3563.,  3753.,  5944.,  6316.,  6688.,  7060.,
      12092., 12852., 13612., 14372., 6212.,  6600.,  6988.,  7376.,  12628.,
      13420., 14212., 15004., 6480.,  6884.,  7288.,  7692.,  3317.,  3515.,
      3713.,  3911.,  6736.,  7140.,  7544.,  7948.,  3451.,  3657.,  3863.,
      4069.,  7004.,  7424.,  7844.,  8264.,  3585.,  3799.,  4013.,  4227.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  123.,  137.,  151.,  165.,
      77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,  304.,  324.,
      344.,  364.,  235.,  249.,  263.,  277.,  291.,  305.,  319.,  333.,
      166.,  194.,  222.,  250.,  278.,  306.,  334.,  362.,  760.,  832.,
      904.,  976.,  546.,  590.,  634.,  678.,  722.,  766.,  810.,  854.,
      281.,  303.,  325.,  347.,  369.,  391.,  413.,  435.,  840.,  892.,
      944.,  996.,  503.,  533.,  563.,  593.,  623.,  653.,  683.,  713.,
      545.,  567.,  589.,  611.,  633.,  655.,  677.,  699.,  1464., 1516.,
      1568., 1620., 863.,  893.,  923.,  953.,  983.,  1013., 1043., 1073.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      29.,   67.,   105.,  143.,  181.,  219.,  257.,  295.,  368.,  452.,
      536.,  620.,  219.,  265.,  311.,  357.,  403.,  449.,  495.,  541.,
      485.,  523.,  561.,  599.,  637.,  675.,  713.,  751.,  1376., 1460.,
      1544., 1628., 771.,  817.,  863.,  909.,  955.,  1001., 1047., 1093.,
      982.,  1074., 1166., 1258., 1350., 1442., 1534., 1626., 2904., 3104.,
      3304., 3504., 1618., 1726., 1834., 1942., 2050., 2158., 2266., 2374.,
      689.,  743.,  797.,  851.,  905.,  959.,  1013., 1067., 1912., 2028.,
      2144., 2260., 1039., 1101., 1163., 1225., 1287., 1349., 1411., 1473.,
      1337., 1391., 1445., 1499., 1553., 1607., 1661., 1715., 3304., 3420.,
      3536., 3652., 1783., 1845., 1907., 1969., 2031., 2093., 2155., 2217.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      53.,   123.,  193.,  263.,  333.,  403.,  473.,  543.,  672.,  820.,
      968.,  1116., 371.,  449.,  527.,  605.,  683.,  761.,  839.,  917.,
      893.,  963.,  1033., 1103., 1173., 1243., 1313., 1383., 2448., 2596.,
      2744., 2892., 1307., 1385., 1463., 1541., 1619., 1697., 1775., 1853.,
      1798., 1954., 2110., 2266., 2422., 2578., 2734., 2890., 5048., 5376.,
      5704., 6032., 2690., 2862., 3034., 3206., 3378., 3550., 3722., 3894.,
      1097., 1183., 1269., 1355., 1441., 1527., 1613., 1699., 2984., 3164.,
      3344., 3524., 1575., 1669., 1763., 1857., 1951., 2045., 2139., 2233.,
      2129., 2215., 2301., 2387., 2473., 2559., 2645., 2731., 5144., 5324.,
      5504., 5684., 2703., 2797., 2891., 2985., 3079., 3173., 3267., 3361.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,   230.,   270.,   310.,   420.,   564.,    708.,    852.,
      486.,   590.,   694.,   798.,   1012.,  1284.,   1556.,   1828.,
      782.,   950.,   1118.,  1286.,  670.,   710.,    750.,    790.,
      2148.,  2292.,  2436.,  2580.,  1734.,  1838.,   1942.,   2046.,
      4276.,  4548.,  4820.,  5092.,  2798.,  2966.,   3134.,   3302.,
      2228.,  2500.,  2772.,  3044.,  6072.,  6744.,   7416.,   8088.,
      4356.,  4756.,  5156.,  5556.,  10328., 11256.,  12184.,  13112.,
      6484.,  7012.,  7540.,  8068.,  3862.,  4094.,   4326.,   4558.,
      8532.,  9060.,  9588.,  10116., 4926.,  5222.,   5518.,   5814.,
      10660., 11316., 11972., 12628., 5990.,  6350.,   6710.,   7070.,
      8612.,  9268.,  9924.,  10580., 18840., 20280.,  21720.,  23160.,
      10740., 11524., 12308., 13092., 23096., 24792.,  26488.,  28184.,
      12868., 13780., 14692., 15604., 7054.,  7478.,   7902.,   8326.,
      14916., 15828., 16740., 17652., 8118.,  8606.,   9094.,   9582.,
      17044., 18084., 19124., 20164., 9182.,  9734.,   10286.,  10838.,
      2854.,  3470.,  4086.,  4702.,  5748.,  7044.,   8340.,   9636.,
      3150.,  3830.,  4510.,  5190.,  6340.,  7764.,   9188.,   10612.,
      3446.,  4190.,  4934.,  5678.,  10246., 10862.,  11478.,  12094.,
      21300., 22596., 23892., 25188., 11310., 11990.,  12670.,  13350.,
      23428., 24852., 26276., 27700., 12374., 13118.,  13862.,  14606.,
      21380., 22804., 24228., 25652., 44376., 47352.,  50328.,  53304.,
      23508., 25060., 26612., 28164., 48632., 51864.,  55096.,  58328.,
      25636., 27316., 28996., 30676., 13438., 14246.,  15054.,  15862.,
      27684., 29364., 31044., 32724., 14502., 15374.,  16246.,  17118.,
      29812., 31620., 33428., 35236., 15566., 16502.,  17438.,  18374.,
      27764., 29572., 31380., 33188., 57144., 60888.,  64632.,  68376.,
      29892., 31828., 33764., 35700., 61400., 65400.,  69400.,  73400.,
      32020., 34084., 36148., 38212., 16630., 17630.,  18630.,  19630.,
      34068., 36132., 38196., 40260., 17694., 18758.,  19822.,  20886.,
      36196., 38388., 40580., 42772., 18758., 19886.,  21014.,  22142.,
      5518.,  6710.,  7902.,  9094.,  11076., 13524.,  15972.,  18420.,
      5814.,  7070.,  8326.,  9582.,  11668., 14244.,  16820.,  19396.,
      6110.,  7430.,  8750.,  10070., 19822., 21014.,  22206.,  23398.,
      40452., 42900., 45348., 47796., 20886., 22142.,  23398.,  24654.,
      42580., 45156., 47732., 50308., 21950., 23270.,  24590.,  25910.,
      40532., 43108., 45684., 48260., 82680., 87960.,  93240.,  98520.,
      42660., 45364., 48068., 50772., 86936., 92472.,  98008.,  103544.,
      44788., 47620., 50452., 53284., 23014., 24398.,  25782.,  27166.,
      46836., 49668., 52500., 55332., 24078., 25526.,  26974.,  28422.,
      48964., 51924., 54884., 57844., 25142., 26654.,  28166.,  29678.,
      46916., 49876., 52836., 55796., 95448., 101496., 107544., 113592.,
      49044., 52132., 55220., 58308., 99704., 106008., 112312., 118616.,
      51172., 54388., 57604., 60820., 26206., 27782.,  29358.,  30934.,
      53220., 56436., 59652., 62868., 27270., 28910.,  30550.,  32190.,
      55348., 58692., 62036., 65380., 28334., 30038.,  31742.,  33446.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   902.,   1006.,
      1110.,  1214.,  510.,   550.,   590.,   630.,   670.,   710.,   750.,
      790.,   2148.,  2292.,  2436.,  2580.,  1734.,  1838.,  1942.,  2046.,
      2150.,  2254.,  2358.,  2462.,  1100.,  1308.,  1516.,  1724.,  1932.,
      2140.,  2348.,  2556.,  5480.,  6024.,  6568.,  7112.,  4060.,  4396.,
      4732.,  5068.,  5404.,  5740.,  6076.,  6412.,  2126.,  2294.,  2462.,
      2630.,  2798.,  2966.,  3134.,  3302.,  6404.,  6804.,  7204.,  7604.,
      3862.,  4094.,  4326.,  4558.,  4790.,  5022.,  5254.,  5486.,  4142.,
      4310.,  4478.,  4646.,  4814.,  4982.,  5150.,  5318.,  11204., 11604.,
      12004., 12404., 6646.,  6878.,  7110.,  7342.,  7574.,  7806.,  8038.,
      8270.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     190.,   486.,   782.,   1078.,  1374.,  1670.,
      1966.,  2262.,  2788.,  3444.,  4100.,  4756.,  1670.,  2030.,  2390.,
      2750.,  3110.,  3470.,  3830.,  4190.,  3742.,  4038.,  4334.,  4630.,
      4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,
      6350.,  6710.,  7070.,  7430.,  7790.,  8150.,  8510.,  7564.,  8284.,
      9004.,  9724.,  10444., 11164., 11884., 12604., 22504., 24072., 25640.,
      27208., 12572., 13420., 14268., 15116., 15964., 16812., 17660., 18508.,
      5358.,  5782.,  6206.,  6630.,  7054.,  7478.,  7902.,  8326.,  14916.,
      15828., 16740., 17652., 8118.,  8606.,  9094.,  9582.,  10070., 10558.,
      11046., 11534., 10446., 10870., 11294., 11718., 12142., 12566., 12990.,
      13414., 25860., 26772., 27684., 28596., 13974., 14462., 14950., 15438.,
      15926., 16414., 16902., 17390., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     350.,   902.,   1454.,
      2006.,  2558.,  3110.,  3662.,  4214.,  5156.,  6324.,  7492.,  8660.,
      2854.,  3470.,  4086.,  4702.,  5318.,  5934.,  6550.,  7166.,  6974.,
      7526.,  8078.,  8630.,  9182.,  9734.,  10286., 10838., 19172., 20340.,
      21508., 22676., 10246., 10862., 11478., 12094., 12710., 13326., 13942.,
      14558., 14028., 15260., 16492., 17724., 18956., 20188., 21420., 22652.,
      39528., 42120., 44712., 47304., 21084., 22444., 23804., 25164., 26524.,
      27884., 29244., 30604., 8590.,  9270.,  9950.,  10630., 11310., 11990.,
      12670., 13350., 23428., 24852., 26276., 27700., 12374., 13118., 13862.,
      14606., 15350., 16094., 16838., 17582., 16750., 17430., 18110., 18790.,
      19470., 20150., 20830., 21510., 40516., 41940., 43364., 44788., 21302.,
      22046., 22790., 23534., 24278., 25022., 25766., 26510., 0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   4.,   5.,   14.,  10.,  24.,  15.,
      11.,  16.,  40.,  26.,  60.,  36.,  16.,  20.,  44.,  25.,  54.,  30.,
      35.,  46.,  100., 56.,  120., 66.,  28.,  35.,  74.,  40.,  84.,  45.,
      10.,  20.,  41.,  22.,  45.,  24.,  40.,  50.,  104., 55.,  114., 60.,
      83.,  106., 220., 116., 240., 126., 52.,  65.,  134., 70.,  144., 75.,
      107., 136., 280., 146., 300., 156., 64.,  80.,  164., 85.,  174., 90.,
      19.,  38.,  77.,  40.,  81.,  42.,  76.,  95.,  194., 100., 204., 105.,
      155., 196., 400., 206., 420., 216., 88.,  110., 224., 115., 234., 120.,
      179., 226., 460., 236., 480., 246., 100., 125., 254., 130., 264., 135.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,   6.,   0., 4.,  5.,  14.,  10., 12., 0.,
      10., 14., 36.,  24.,  30.,  0., 12., 15., 34.,  20., 24., 0.,
      21., 24., 55.,  32.,  36.,  0., 0.,  0.,  0.,   0.,  0.,  0.,
      5.,  10., 21.,  12.,  18.,  0., 20., 25., 54.,  30., 36., 0.,
      42., 54., 116., 64.,  78.,  0., 28., 35., 74.,  40., 48., 0.,
      49., 56., 119., 64.,  72.,  0., 0.,  0.,  0.,   0.,  0.,  0.,
      9.,  18., 37.,  20.,  30.,  0., 36., 45., 94.,  50., 60., 0.,
      74., 94., 196., 104., 126., 0., 44., 55., 114., 60., 72., 0.,
      77., 88., 183., 96.,  108., 0., 0.,  0.,  0.,   0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   23.,   29.,   88.,   67.,
      164.,  105.,  64.,   100.,  260.,  176.,  412.,  252.,  113.,  143.,
      316.,  181.,  392.,  219.,  244.,  328.,  716.,  404.,  868.,  480.,
      203.,  257.,  544.,  295.,  620.,  333.,  59.,   137.,  280.,  151.,
      308.,  165.,  293.,  371.,  772.,  409.,  848.,  447.,  604.,  784.,
      1628., 860.,  1780., 936.,  383.,  485.,  1000., 523.,  1076., 561.,
      784.,  1012., 2084., 1088., 2236., 1164., 473.,  599.,  1228., 637.,
      1304., 675.,  113.,  263.,  532.,  277.,  560.,  291.,  563.,  713.,
      1456., 751.,  1532., 789.,  1144., 1468., 2996., 1544., 3148., 1620.,
      653.,  827.,  1684., 865.,  1760., 903.,  1324., 1696., 3452., 1772.,
      3604., 1848., 743.,  941.,  1912., 979.,  1988., 1017.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,   25.,  39.,  0., 23.,  29.,  88.,  67.,  81.,  0.,
      58.,  86.,  232.,  162., 206., 0., 83.,  105., 240., 143., 173., 0.,
      149., 171., 396.,  233., 263., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      29.,  67.,  140.,  81.,  127., 0., 143., 181., 392., 219., 265., 0.,
      298., 390., 840.,  466., 574., 0., 203., 257., 544., 295., 357., 0.,
      365., 419., 892.,  481., 543., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      53.,  123., 252.,  137., 215., 0., 263., 333., 696., 371., 449., 0.,
      538., 694., 1448., 770., 942., 0., 323., 409., 848., 447., 541., 0.,
      581., 667., 1388., 729., 823., 0., 0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,  388.,   278.,   150.,   190.,   612.,
      486.,   1204.,  782.,   420.,  692.,   1848.,  1284.,  3032.,  1876.,
      846.,   1078.,  2388.,  1374., 2980.,  1670.,  1812.,  2468.,  5400.,
      3060.,  6584.,  3652.,  1542., 1966.,  4164.,  2262.,  4756.,  2558.,
      390.,   1006.,  2052.,  1110., 2260.,  1214.,  2238.,  2854.,  5940.,
      3150.,  6532.,  3446.,  4596., 6020.,  12504., 6612.,  13688., 7204.,
      2934.,  3742.,  7716.,  4038., 8308.,  4334.,  5988.,  7796.,  16056.,
      8388.,  17240., 8980.,  3630., 4630.,  9492.,  4926.,  10084., 5222.,
      750.,   1942.,  3924.,  2046., 4132.,  2150.,  4326.,  5518.,  11268.,
      5814.,  11860., 6110.,  8772., 11348., 23160., 11940., 24344., 12532.,
      5022.,  6406.,  13044., 6702., 13636., 6998.,  10164., 13124., 26712.,
      13716., 27896., 14308., 5718., 7294.,  14820., 7590.,  15412., 7886.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  0.,    150.,   190.,  612.,   486.,
      590.,  0.,    380.,  588.,  1640., 1180., 1516.,  0.,    614.,   782.,
      1796., 1078., 1310., 0.,    1118., 1286., 2996.,  1774., 2006.,  0.,
      0.,    0.,    0.,    0.,    0.,    0.,    190.,   486.,  1012.,  590.,
      950.,  0.,    1078., 1374., 2980., 1670., 2030.,  0.,    2236.,  2956.,
      6376., 3548., 4396., 0.,    1542., 1966., 4164.,  2262., 2750.,  0.,
      2814., 3238., 6900., 3726., 4214., 0.,    0.,     0.,    0.,     0.,
      0.,    0.,    350.,  902.,  1844., 1006., 1622.,  0.,    2006.,  2558.,
      5348., 2854., 3470., 0.,    4092., 5324., 11112., 5916., 7276.,  0.,
      2470., 3150., 6532., 3446., 4190., 0.,    4510.,  5190., 10804., 5678.,
      6422., 0.,    0.,    0.,    0.,    0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,
      7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,  43.,  48.,  27.,  30.,
      17.,  22.,  27.,  32.,  68.,  80.,  45.,  52.,  104., 120., 63.,  72.,
      28.,  32.,  36.,  40.,  79.,  88.,  45.,  50.,  97.,  108., 54.,  60.,
      59.,  70.,  81.,  92.,  176., 200., 99.,  112., 212., 240., 117., 132.,
      49.,  56.,  63.,  70.,  133., 148., 72.,  80.,  151., 168., 81.,  90.,
      10.,  20.,  30.,  40.,  61.,  82.,  33.,  44.,  67.,  90.,  36.,  48.,
      70.,  80.,  90.,  100., 187., 208., 99.,  110., 205., 228., 108., 120.,
      143., 166., 189., 212., 392., 440., 207., 232., 428., 480., 225., 252.,
      91.,  104., 117., 130., 241., 268., 126., 140., 259., 288., 135., 150.,
      185., 214., 243., 272., 500., 560., 261., 292., 536., 600., 279., 312.,
      112., 128., 144., 160., 295., 328., 153., 170., 313., 348., 162., 180.,
      19.,  38.,  57.,  76.,  115., 154., 60.,  80.,  121., 162., 63.,  84.,
      133., 152., 171., 190., 349., 388., 180., 200., 367., 408., 189., 210.,
      269., 310., 351., 392., 716., 800., 369., 412., 752., 840., 387., 432.,
      154., 176., 198., 220., 403., 448., 207., 230., 421., 468., 216., 240.,
      311., 358., 405., 452., 824., 920., 423., 472., 860., 960., 441., 492.,
      175., 200., 225., 250., 457., 508., 234., 260., 475., 528., 243., 270.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   10.,  12.,  0., 0.,
      7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,  22.,  24.,  0., 0.,
      16.,  20.,  24.,  28.,  62.,  72.,  42.,  48.,  54.,  60.,  0., 0.,
      21.,  24.,  27.,  30.,  61.,  68.,  36.,  40.,  44.,  48.,  0., 0.,
      39.,  42.,  45.,  48.,  103., 110., 60.,  64.,  68.,  72.,  0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,
      5.,   10.,  15.,  20.,  31.,  42.,  18.,  24.,  30.,  36.,  0., 0.,
      35.,  40.,  45.,  50.,  97.,  108., 54.,  60.,  66.,  72.,  0., 0.,
      72.,  84.,  96.,  108., 206., 232., 114., 128., 142., 156., 0., 0.,
      49.,  56.,  63.,  70.,  133., 148., 72.,  80.,  88.,  96.,  0., 0.,
      91.,  98.,  105., 112., 223., 238., 120., 128., 136., 144., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,
      9.,   18.,  27.,  36.,  55.,  74.,  30.,  40.,  50.,  60.,  0., 0.,
      63.,  72.,  81.,  90.,  169., 188., 90.,  100., 110., 120., 0., 0.,
      128., 148., 168., 188., 350., 392., 186., 208., 230., 252., 0., 0.,
      77.,  88.,  99.,  110., 205., 228., 108., 120., 132., 144., 0., 0.,
      143., 154., 165., 176., 343., 366., 180., 192., 204., 216., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,
      300.,  336.,  193.,  215.,  100.,  136.,  172.,  208.,  452.,  540.,
      312.,  364.,  732.,  852.,  452.,  520.,  203.,  233.,  263.,  293.,
      580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,  424.,  508.,
      592.,  676.,  1292., 1476., 732.,  832.,  1572., 1788., 872.,  988.,
      365.,  419.,  473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272.,
      613.,  683.,  59.,   137.,  215.,  293.,  436.,  600.,  237.,  323.,
      480.,  660.,  259.,  353.,  527.,  605.,  683.,  761.,  1420., 1584.,
      753.,  839.,  1560., 1740., 823.,  917.,  1072., 1252., 1432., 1612.,
      2972., 3348., 1572., 1768., 3252., 3660., 1712., 1924., 689.,  791.,
      893.,  995.,  1840., 2052., 963.,  1073., 1980., 2208., 1033., 1151.,
      1396., 1624., 1852., 2080., 3812., 4284., 1992., 2236., 4092., 4596.,
      2132., 2392., 851.,  977.,  1103., 1229., 2260., 2520., 1173., 1307.,
      2400., 2676., 1243., 1385., 113.,  263.,  413.,  563.,  832.,  1140.,
      435.,  593.,  876.,  1200., 457.,  623.,  1013., 1163., 1313., 1463.,
      2680., 2988., 1383., 1541., 2820., 3144., 1453., 1619., 2044., 2368.,
      2692., 3016., 5492., 6156., 2832., 3172., 5772., 6468., 2972., 3328.,
      1175., 1349., 1523., 1697., 3100., 3456., 1593., 1775., 3240., 3612.,
      1663., 1853., 2368., 2740., 3112., 3484., 6332., 7092., 3252., 3640.,
      6612., 7404., 3392., 3796., 1337., 1535., 1733., 1931., 3520., 3924.,
      1803., 2009., 3660., 4080., 1873., 2087.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   67.,   81.,
      0.,    0.,    41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,
      151.,  165.,  0.,    0.,    94.,   122.,  150.,  178.,  408.,  480.,
      290.,  334.,  378.,  422.,  0.,    0.,    149.,  171.,  193.,  215.,
      440.,  492.,  263.,  293.,  323.,  353.,  0.,    0.,    281.,  303.,
      325.,  347.,  752.,  804.,  443.,  473.,  503.,  533.,  0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    29.,   67.,   105.,  143.,  216.,  300.,  127.,  173.,
      219.,  265.,  0.,    0.,    257.,  295.,  333.,  371.,  720.,  804.,
      403.,  449.,  495.,  541.,  0.,    0.,    526.,  618.,  710.,  802.,
      1528., 1728., 850.,  958.,  1066., 1174., 0.,    0.,    365.,  419.,
      473.,  527.,  1000., 1116., 543.,  605.,  667.,  729.,  0.,    0.,
      689.,  743.,  797.,  851.,  1696., 1812., 915.,  977.,  1039., 1101.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    53.,   123.,  193.,  263.,  392.,  540.,
      215.,  293.,  371.,  449.,  0.,    0.,    473.,  543.,  613.,  683.,
      1280., 1428., 683.,  761.,  839.,  917.,  0.,    0.,    958.,  1114.,
      1270., 1426., 2648., 2976., 1410., 1582., 1754., 1926., 0.,    0.,
      581.,  667.,  753.,  839.,  1560., 1740., 823.,  917.,  1011., 1105.,
      0.,    0.,    1097., 1183., 1269., 1355., 2640., 2820., 1387., 1481.,
      1575., 1669., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   596.,
      868.,   446.,   614.,   270.,   310.,   350.,   390.,   1124.,  1268.,
      902.,   1006.,  2228.,  2500.,  1454.,  1622.,  660.,   932.,   1204.,
      1476.,  3256.,  3928.,  2308.,  2708.,  5464.,  6392.,  3412.,  3940.,
      1542.,  1774.,  2006.,  2238.,  4436.,  4964.,  2558.,  2854.,  5540.,
      6196.,  3110.,  3470.,  3204.,  3860.,  4516.,  5172.,  9880.,  11320.,
      5620.,  6404.,  12088., 13784., 6724.,  7636.,  2814.,  3238.,  3662.,
      4086.,  7748.,  8660.,  4214.,  4702.,  8852.,  9892.,  4766.,  5318.,
      390.,   1006.,  1622.,  2238.,  3284.,  4580.,  1790.,  2470.,  3620.,
      5044.,  1958.,  2702.,  4086.,  4702.,  5318.,  5934.,  11060., 12356.,
      5870.,  6550.,  12164., 13588., 6422.,  7166.,  8292.,  9716.,  11140.,
      12564., 23128., 26104., 12244., 13796., 25336., 28568., 13348., 15028.,
      5358.,  6166.,  6974.,  7782.,  14372., 16052., 7526.,  8398.,  15476.,
      17284., 8078.,  9014.,  10836., 12644., 14452., 16260., 29752., 33496.,
      15556., 17492., 31960., 35960., 16660., 18724., 6630.,  7630.,  8630.,
      9630.,  17684., 19748., 9182.,  10246., 18788., 20980., 9734.,  10862.,
      750.,   1942.,  3134.,  4326.,  6308.,  8756.,  3302.,  4558.,  6644.,
      9220.,  3470.,  4790.,  7902.,  9094.,  10286., 11478., 20996., 23444.,
      10838., 12094., 22100., 24676., 11390., 12710., 15924., 18500., 21076.,
      23652., 43000., 48280., 22180., 24884., 45208., 50744., 23284., 26116.,
      9174.,  10558., 11942., 13326., 24308., 27140., 12494., 13942., 25412.,
      28372., 13046., 14558., 18468., 21428., 24388., 27348., 49624., 55672.,
      25492., 28580., 51832., 58136., 26596., 29812., 10446., 12022., 13598.,
      15174., 27620., 30836., 14150., 15790., 28724., 32068., 14702., 16406.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   486.,
      590.,   0.,     0.,     270.,   310.,   350.,   390.,   1124.,  1268.,
      902.,   1006.,  1110.,  1214.,  0.,     0.,     620.,   828.,   1036.,
      1244.,  2920.,  3464.,  2140.,  2476.,  2812.,  3148.,  0.,     0.,
      1118.,  1286.,  1454.,  1622.,  3332.,  3732.,  2006.,  2238.,  2470.,
      2702.,  0.,     0.,     2126.,  2294.,  2462.,  2630.,  5732.,  6132.,
      3398.,  3630.,  3862.,  4094.,  0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      190.,   486.,   782.,   1078.,  1604.,  2260.,  950.,   1310.,  1670.,
      2030.,  0.,     0.,     1966.,  2262.,  2558.,  2854.,  5540.,  6196.,
      3110.,  3470.,  3830.,  4190.,  0.,     0.,     4012.,  4732.,  5452.,
      6172.,  11752., 13320., 6556.,  7404.,  8252.,  9100.,  0.,     0.,
      2814.,  3238.,  3662.,  4086.,  7748.,  8660.,  4214.,  4702.,  5190.,
      5678.,  0.,     0.,     5358.,  5782.,  6206.,  6630.,  13220., 14132.,
      7142.,  7630.,  8118.,  8606.,  0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      350.,   902.,   1454.,  2006.,  2948.,  4116.,  1622.,  2238.,  2854.,
      3470.,  0.,     0.,     3662.,  4214.,  4766.,  5318.,  9956.,  11124.,
      5318.,  5934.,  6550.,  7166.,  0.,     0.,     7404.,  8636.,  9868.,
      11100., 20584., 23176., 10972., 12332., 13692., 15052., 0.,     0.,
      4510.,  5190.,  5870.,  6550.,  12164., 13588., 6422.,  7166.,  7910.,
      8654.,  0.,     0.,     8590.,  9270.,  9950.,  10630., 20708., 22132.,
      10886., 11630., 12374., 13118., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    5.,    6.,    7.,    8.,    11.,   14.,
      17.,   20.,   10.,   12.,   14.,   16.,   21.,   26.,   31.,   36.,
      15.,   18.,   21.,   24.,   13.,   14.,   15.,   16.,   17.,   18.,
      19.,   20.,   47.,   50.,   53.,   56.,   34.,   36.,   38.,   40.,
      81.,   86.,   91.,   96.,   51.,   54.,   57.,   60.,   29.,   34.,
      39.,   44.,   49.,   54.,   59.,   64.,   124.,  136.,  148.,  160.,
      83.,   90.,   97.,   104.,  192.,  208.,  224.,  240.,  117.,  126.,
      135.,  144.,  52.,   56.,   60.,   64.,   68.,   72.,   76.,   80.,
      149.,  158.,  167.,  176.,  85.,   90.,   95.,   100.,  183.,  194.,
      205.,  216.,  102.,  108.,  114.,  120.,  107.,  118.,  129.,  140.,
      151.,  162.,  173.,  184.,  328.,  352.,  376.,  400.,  185.,  198.,
      211.,  224.,  396.,  424.,  452.,  480.,  219.,  234.,  249.,  264.,
      91.,   98.,   105.,  112.,  119.,  126.,  133.,  140.,  251.,  266.,
      281.,  296.,  136.,  144.,  152.,  160.,  285.,  302.,  319.,  336.,
      153.,  162.,  171.,  180.,  10.,   20.,   30.,   40.,   50.,   60.,
      70.,   80.,   101.,  122.,  143.,  164.,  55.,   66.,   77.,   88.,
      111.,  134.,  157.,  180.,  60.,   72.,   84.,   96.,   130.,  140.,
      150.,  160.,  170.,  180.,  190.,  200.,  353.,  374.,  395.,  416.,
      187.,  198.,  209.,  220.,  387.,  410.,  433.,  456.,  204.,  216.,
      228.,  240.,  263.,  286.,  309.,  332.,  355.,  378.,  401.,  424.,
      736.,  784.,  832.,  880.,  389.,  414.,  439.,  464.,  804.,  856.,
      908.,  960.,  423.,  450.,  477.,  504.,  169.,  182.,  195.,  208.,
      221.,  234.,  247.,  260.,  455.,  482.,  509.,  536.,  238.,  252.,
      266.,  280.,  489.,  518.,  547.,  576.,  255.,  270.,  285.,  300.,
      341.,  370.,  399.,  428.,  457.,  486.,  515.,  544.,  940.,  1000.,
      1060., 1120., 491.,  522.,  553.,  584.,  1008., 1072., 1136., 1200.,
      525.,  558.,  591.,  624.,  208.,  224.,  240.,  256.,  272.,  288.,
      304.,  320.,  557.,  590.,  623.,  656.,  289.,  306.,  323.,  340.,
      591.,  626.,  661.,  696.,  306.,  324.,  342.,  360.,  19.,   38.,
      57.,   76.,   95.,   114.,  133.,  152.,  191.,  230.,  269.,  308.,
      100.,  120.,  140.,  160.,  201.,  242.,  283.,  324.,  105.,  126.,
      147.,  168.,  247.,  266.,  285.,  304.,  323.,  342.,  361.,  380.,
      659.,  698.,  737.,  776.,  340.,  360.,  380.,  400.,  693.,  734.,
      775.,  816.,  357.,  378.,  399.,  420.,  497.,  538.,  579.,  620.,
      661.,  702.,  743.,  784.,  1348., 1432., 1516., 1600., 695.,  738.,
      781.,  824.,  1416., 1504., 1592., 1680., 729.,  774.,  819.,  864.,
      286.,  308.,  330.,  352.,  374.,  396.,  418.,  440.,  761.,  806.,
      851.,  896.,  391.,  414.,  437.,  460.,  795.,  842.,  889.,  936.,
      408.,  432.,  456.,  480.,  575.,  622.,  669.,  716.,  763.,  810.,
      857.,  904.,  1552., 1648., 1744., 1840., 797.,  846.,  895.,  944.,
      1620., 1720., 1820., 1920., 831.,  882.,  933.,  984.,  325.,  350.,
      375.,  400.,  425.,  450.,  475.,  500.,  863.,  914.,  965.,  1016.,
      442.,  468.,  494.,  520.,  897.,  950.,  1003., 1056., 459.,  486.,
      513.,  540.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   11.,  14.,  17.,  20.,
      10.,  12.,  14.,  16.,  18.,  20.,  22.,  24.,  0.,   0.,   0.,   0.,
      13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  47.,  50.,  53.,  56.,
      34.,  36.,  38.,  40.,  42.,  44.,  46.,  48.,  0.,   0.,   0.,   0.,
      28.,  32.,  36.,  40.,  44.,  48.,  52.,  56.,  114., 124., 134., 144.,
      78.,  84.,  90.,  96.,  102., 108., 114., 120., 0.,   0.,   0.,   0.,
      39.,  42.,  45.,  48.,  51.,  54.,  57.,  60.,  115., 122., 129., 136.,
      68.,  72.,  76.,  80.,  84.,  88.,  92.,  96.,  0.,   0.,   0.,   0.,
      75.,  78.,  81.,  84.,  87.,  90.,  93.,  96.,  199., 206., 213., 220.,
      116., 120., 124., 128., 132., 136., 140., 144., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      5.,   10.,  15.,  20.,  25.,  30.,  35.,  40.,  51.,  62.,  73.,  84.,
      30.,  36.,  42.,  48.,  54.,  60.,  66.,  72.,  0.,   0.,   0.,   0.,
      65.,  70.,  75.,  80.,  85.,  90.,  95.,  100., 183., 194., 205., 216.,
      102., 108., 114., 120., 126., 132., 138., 144., 0.,   0.,   0.,   0.,
      132., 144., 156., 168., 180., 192., 204., 216., 386., 412., 438., 464.,
      214., 228., 242., 256., 270., 284., 298., 312., 0.,   0.,   0.,   0.,
      91.,  98.,  105., 112., 119., 126., 133., 140., 251., 266., 281., 296.,
      136., 144., 152., 160., 168., 176., 184., 192., 0.,   0.,   0.,   0.,
      175., 182., 189., 196., 203., 210., 217., 224., 431., 446., 461., 476.,
      232., 240., 248., 256., 264., 272., 280., 288., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      9.,   18.,  27.,  36.,  45.,  54.,  63.,  72.,  91.,  110., 129., 148.,
      50.,  60.,  70.,  80.,  90.,  100., 110., 120., 0.,   0.,   0.,   0.,
      117., 126., 135., 144., 153., 162., 171., 180., 319., 338., 357., 376.,
      170., 180., 190., 200., 210., 220., 230., 240., 0.,   0.,   0.,   0.,
      236., 256., 276., 296., 316., 336., 356., 376., 658., 700., 742., 784.,
      350., 372., 394., 416., 438., 460., 482., 504., 0.,   0.,   0.,   0.,
      143., 154., 165., 176., 187., 198., 209., 220., 387., 410., 433., 456.,
      204., 216., 228., 240., 252., 264., 276., 288., 0.,   0.,   0.,   0.,
      275., 286., 297., 308., 319., 330., 341., 352., 663., 686., 709., 732.,
      348., 360., 372., 384., 396., 408., 420., 432., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,    17.,    23.,    29.,    35.,    41.,    47.,    64.,
      84.,   104.,   124.,   67.,    81.,    95.,    109.,   140.,   176.,
      212.,  248.,   105.,   127.,   149.,   171.,   77.,    83.,    89.,
      95.,   101.,   107.,   113.,   119.,   304.,   324.,   344.,   364.,
      235.,  249.,   263.,   277.,   572.,   608.,   644.,   680.,   369.,
      391.,  413.,   435.,   172.,   208.,   244.,   280.,   316.,   352.,
      388.,  424.,   836.,   924.,   1012.,  1100.,  584.,   636.,   688.,
      740.,  1372.,  1492.,  1612.,  1732.,  852.,   920.,   988.,   1056.,
      383.,  413.,   443.,   473.,   503.,   533.,   563.,   593.,   1108.,
      1176., 1244.,  1312.,  637.,   675.,   713.,   751.,   1376.,  1460.,
      1544., 1628.,  771.,   817.,   863.,   909.,   784.,   868.,   952.,
      1036., 1120.,  1204.,  1288.,  1372.,  2444.,  2628.,  2812.,  2996.,
      1388., 1488.,  1588.,  1688.,  2980.,  3196.,  3412.,  3628.,  1656.,
      1772., 1888.,  2004.,  689.,   743.,   797.,   851.,   905.,   959.,
      1013., 1067.,  1912.,  2028.,  2144.,  2260.,  1039.,  1101.,  1163.,
      1225., 2180.,  2312.,  2444.,  2576.,  1173.,  1243.,  1313.,  1383.,
      59.,   137.,   215.,   293.,   371.,   449.,   527.,   605.,   748.,
      912.,  1076.,  1240.,  409.,   495.,   581.,   667.,   824.,   1004.,
      1184., 1364.,  447.,   541.,   635.,   729.,   995.,   1073.,  1151.,
      1229., 1307.,  1385.,  1463.,  1541.,  2716.,  2880.,  3044.,  3208.,
      1441., 1527.,  1613.,  1699.,  2984.,  3164.,  3344.,  3524.,  1575.,
      1669., 1763.,  1857.,  2008.,  2188.,  2368.,  2548.,  2728.,  2908.,
      3088., 3268.,  5660.,  6036.,  6412.,  6788.,  2996.,  3192.,  3388.,
      3584., 6196.,  6604.,  7012.,  7420.,  3264.,  3476.,  3688.,  3900.,
      1301., 1403.,  1505.,  1607.,  1709.,  1811.,  1913.,  2015.,  3520.,
      3732., 3944.,  4156.,  1843.,  1953.,  2063.,  2173.,  3788.,  4016.,
      4244., 4472.,  1977.,  2095.,  2213.,  2331.,  2620.,  2848.,  3076.,
      3304., 3532.,  3760.,  3988.,  4216.,  7268.,  7740.,  8212.,  8684.,
      3800., 4044.,  4288.,  4532.,  7804.,  8308.,  8812.,  9316.,  4068.,
      4328., 4588.,  4848.,  1607.,  1733.,  1859.,  1985.,  2111.,  2237.,
      2363., 2489.,  4324.,  4584.,  4844.,  5104.,  2245.,  2379.,  2513.,
      2647., 4592.,  4868.,  5144.,  5420.,  2379.,  2521.,  2663.,  2805.,
      113.,  263.,   413.,   563.,   713.,   863.,   1013.,  1163.,  1432.,
      1740., 2048.,  2356.,  751.,   909.,   1067.,  1225.,  1508.,  1832.,
      2156., 2480.,  789.,   955.,   1121.,  1287.,  1913.,  2063.,  2213.,
      2363., 2513.,  2663.,  2813.,  2963.,  5128.,  5436.,  5744.,  6052.,
      2647., 2805.,  2963.,  3121.,  5396.,  5720.,  6044.,  6368.,  2781.,
      2947., 3113.,  3279.,  3844.,  4168.,  4492.,  4816.,  5140.,  5464.,
      5788., 6112.,  10484., 11148., 11812., 12476., 5408.,  5748.,  6088.,
      6428., 11020., 11716., 12412., 13108., 5676.,  6032.,  6388.,  6744.,
      2219., 2393.,  2567.,  2741.,  2915.,  3089.,  3263.,  3437.,  5932.,
      6288., 6644.,  7000.,  3049.,  3231.,  3413.,  3595.,  6200.,  6572.,
      6944., 7316.,  3183.,  3373.,  3563.,  3753.,  4456.,  4828.,  5200.,
      5572., 5944.,  6316.,  6688.,  7060.,  12092., 12852., 13612., 14372.,
      6212., 6600.,  6988.,  7376.,  12628., 13420., 14212., 15004., 6480.,
      6884., 7288.,  7692.,  2525.,  2723.,  2921.,  3119.,  3317.,  3515.,
      3713., 3911.,  6736.,  7140.,  7544.,  7948.,  3451.,  3657.,  3863.,
      4069., 7004.,  7424.,  7844.,  8264.,  3585.,  3799.,  4013.,  4227.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  123.,  137.,  151.,  165.,
      0.,    0.,    0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,
      113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,
      291.,  305.,  319.,  333.,  0.,    0.,    0.,    0.,    166.,  194.,
      222.,  250.,  278.,  306.,  334.,  362.,  760.,  832.,  904.,  976.,
      546.,  590.,  634.,  678.,  722.,  766.,  810.,  854.,  0.,    0.,
      0.,    0.,    281.,  303.,  325.,  347.,  369.,  391.,  413.,  435.,
      840.,  892.,  944.,  996.,  503.,  533.,  563.,  593.,  623.,  653.,
      683.,  713.,  0.,    0.,    0.,    0.,    545.,  567.,  589.,  611.,
      633.,  655.,  677.,  699.,  1464., 1516., 1568., 1620., 863.,  893.,
      923.,  953.,  983.,  1013., 1043., 1073., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    29.,   67.,   105.,  143.,  181.,  219.,
      257.,  295.,  368.,  452.,  536.,  620.,  219.,  265.,  311.,  357.,
      403.,  449.,  495.,  541.,  0.,    0.,    0.,    0.,    485.,  523.,
      561.,  599.,  637.,  675.,  713.,  751.,  1376., 1460., 1544., 1628.,
      771.,  817.,  863.,  909.,  955.,  1001., 1047., 1093., 0.,    0.,
      0.,    0.,    982.,  1074., 1166., 1258., 1350., 1442., 1534., 1626.,
      2904., 3104., 3304., 3504., 1618., 1726., 1834., 1942., 2050., 2158.,
      2266., 2374., 0.,    0.,    0.,    0.,    689.,  743.,  797.,  851.,
      905.,  959.,  1013., 1067., 1912., 2028., 2144., 2260., 1039., 1101.,
      1163., 1225., 1287., 1349., 1411., 1473., 0.,    0.,    0.,    0.,
      1337., 1391., 1445., 1499., 1553., 1607., 1661., 1715., 3304., 3420.,
      3536., 3652., 1783., 1845., 1907., 1969., 2031., 2093., 2155., 2217.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    53.,   123.,
      193.,  263.,  333.,  403.,  473.,  543.,  672.,  820.,  968.,  1116.,
      371.,  449.,  527.,  605.,  683.,  761.,  839.,  917.,  0.,    0.,
      0.,    0.,    893.,  963.,  1033., 1103., 1173., 1243., 1313., 1383.,
      2448., 2596., 2744., 2892., 1307., 1385., 1463., 1541., 1619., 1697.,
      1775., 1853., 0.,    0.,    0.,    0.,    1798., 1954., 2110., 2266.,
      2422., 2578., 2734., 2890., 5048., 5376., 5704., 6032., 2690., 2862.,
      3034., 3206., 3378., 3550., 3722., 3894., 0.,    0.,    0.,    0.,
      1097., 1183., 1269., 1355., 1441., 1527., 1613., 1699., 2984., 3164.,
      3344., 3524., 1575., 1669., 1763., 1857., 1951., 2045., 2139., 2233.,
      0.,    0.,    0.,    0.,    2129., 2215., 2301., 2387., 2473., 2559.,
      2645., 2731., 5144., 5324., 5504., 5684., 2703., 2797., 2891., 2985.,
      3079., 3173., 3267., 3361., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,     110.,    150.,    190.,   230.,   270.,   310.,
      420.,   564.,    708.,    852.,    486.,   590.,   694.,   798.,
      1012.,  1284.,   1556.,   1828.,   782.,   950.,   1118.,  1286.,
      510.,   550.,    590.,    630.,    670.,   710.,   750.,   790.,
      2148.,  2292.,   2436.,   2580.,   1734.,  1838.,  1942.,  2046.,
      4276.,  4548.,   4820.,   5092.,   2798.,  2966.,  3134.,  3302.,
      1140.,  1412.,   1684.,   1956.,   2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,   7416.,   8088.,   4356.,  4756.,  5156.,  5556.,
      10328., 11256.,  12184.,  13112.,  6484.,  7012.,  7540.,  8068.,
      2934.,  3166.,   3398.,   3630.,   3862.,  4094.,  4326.,  4558.,
      8532.,  9060.,   9588.,   10116.,  4926.,  5222.,  5518.,  5814.,
      10660., 11316.,  11972.,  12628.,  5990.,  6350.,  6710.,  7070.,
      5988.,  6644.,   7300.,   7956.,   8612.,  9268.,  9924.,  10580.,
      18840., 20280.,  21720.,  23160.,  10740., 11524., 12308., 13092.,
      23096., 24792.,  26488.,  28184.,  12868., 13780., 14692., 15604.,
      5358.,  5782.,   6206.,   6630.,   7054.,  7478.,  7902.,  8326.,
      14916., 15828.,  16740.,  17652.,  8118.,  8606.,  9094.,  9582.,
      17044., 18084.,  19124.,  20164.,  9182.,  9734.,  10286., 10838.,
      390.,   1006.,   1622.,   2238.,   2854.,  3470.,  4086.,  4702.,
      5748.,  7044.,   8340.,   9636.,   3150.,  3830.,  4510.,  5190.,
      6340.,  7764.,   9188.,   10612.,  3446.,  4190.,  4934.,  5678.,
      7782.,  8398.,   9014.,   9630.,   10246., 10862., 11478., 12094.,
      21300., 22596.,  23892.,  25188.,  11310., 11990., 12670., 13350.,
      23428., 24852.,  26276.,  27700.,  12374., 13118., 13862., 14606.,
      15684., 17108.,  18532.,  19956.,  21380., 22804., 24228., 25652.,
      44376., 47352.,  50328.,  53304.,  23508., 25060., 26612., 28164.,
      48632., 51864.,  55096.,  58328.,  25636., 27316., 28996., 30676.,
      10206., 11014.,  11822.,  12630.,  13438., 14246., 15054., 15862.,
      27684., 29364.,  31044.,  32724.,  14502., 15374., 16246., 17118.,
      29812., 31620.,  33428.,  35236.,  15566., 16502., 17438., 18374.,
      20532., 22340.,  24148.,  25956.,  27764., 29572., 31380., 33188.,
      57144., 60888.,  64632.,  68376.,  29892., 31828., 33764., 35700.,
      61400., 65400.,  69400.,  73400.,  32020., 34084., 36148., 38212.,
      12630., 13630.,  14630.,  15630.,  16630., 17630., 18630., 19630.,
      34068., 36132.,  38196.,  40260.,  17694., 18758., 19822., 20886.,
      36196., 38388.,  40580.,  42772.,  18758., 19886., 21014., 22142.,
      750.,   1942.,   3134.,   4326.,   5518.,  6710.,  7902.,  9094.,
      11076., 13524.,  15972.,  18420.,  5814.,  7070.,  8326.,  9582.,
      11668., 14244.,  16820.,  19396.,  6110.,  7430.,  8750.,  10070.,
      15054., 16246.,  17438.,  18630.,  19822., 21014., 22206., 23398.,
      40452., 42900.,  45348.,  47796.,  20886., 22142., 23398., 24654.,
      42580., 45156.,  47732.,  50308.,  21950., 23270., 24590., 25910.,
      30228., 32804.,  35380.,  37956.,  40532., 43108., 45684., 48260.,
      82680., 87960.,  93240.,  98520.,  42660., 45364., 48068., 50772.,
      86936., 92472.,  98008.,  103544., 44788., 47620., 50452., 53284.,
      17478., 18862.,  20246.,  21630.,  23014., 24398., 25782., 27166.,
      46836., 49668.,  52500.,  55332.,  24078., 25526., 26974., 28422.,
      48964., 51924.,  54884.,  57844.,  25142., 26654., 28166., 29678.,
      35076., 38036.,  40996.,  43956.,  46916., 49876., 52836., 55796.,
      95448., 101496., 107544., 113592., 49044., 52132., 55220., 58308.,
      99704., 106008., 112312., 118616., 51172., 54388., 57604., 60820.,
      19902., 21478.,  23054.,  24630.,  26206., 27782., 29358., 30934.,
      53220., 56436.,  59652.,  62868.,  27270., 28910., 30550., 32190.,
      55348., 58692.,  62036.,  65380.,  28334., 30038., 31742., 33446.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   902.,   1006.,
      1110.,  1214.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,
      630.,   670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,
      1734.,  1838.,  1942.,  2046.,  2150.,  2254.,  2358.,  2462.,  0.,
      0.,     0.,     0.,     1100.,  1308.,  1516.,  1724.,  1932.,  2140.,
      2348.,  2556.,  5480.,  6024.,  6568.,  7112.,  4060.,  4396.,  4732.,
      5068.,  5404.,  5740.,  6076.,  6412.,  0.,     0.,     0.,     0.,
      2126.,  2294.,  2462.,  2630.,  2798.,  2966.,  3134.,  3302.,  6404.,
      6804.,  7204.,  7604.,  3862.,  4094.,  4326.,  4558.,  4790.,  5022.,
      5254.,  5486.,  0.,     0.,     0.,     0.,     4142.,  4310.,  4478.,
      4646.,  4814.,  4982.,  5150.,  5318.,  11204., 11604., 12004., 12404.,
      6646.,  6878.,  7110.,  7342.,  7574.,  7806.,  8038.,  8270.,  0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      190.,   486.,   782.,   1078.,  1374.,  1670.,  1966.,  2262.,  2788.,
      3444.,  4100.,  4756.,  1670.,  2030.,  2390.,  2750.,  3110.,  3470.,
      3830.,  4190.,  0.,     0.,     0.,     0.,     3742.,  4038.,  4334.,
      4630.,  4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628.,
      5990.,  6350.,  6710.,  7070.,  7430.,  7790.,  8150.,  8510.,  0.,
      0.,     0.,     0.,     7564.,  8284.,  9004.,  9724.,  10444., 11164.,
      11884., 12604., 22504., 24072., 25640., 27208., 12572., 13420., 14268.,
      15116., 15964., 16812., 17660., 18508., 0.,     0.,     0.,     0.,
      5358.,  5782.,  6206.,  6630.,  7054.,  7478.,  7902.,  8326.,  14916.,
      15828., 16740., 17652., 8118.,  8606.,  9094.,  9582.,  10070., 10558.,
      11046., 11534., 0.,     0.,     0.,     0.,     10446., 10870., 11294.,
      11718., 12142., 12566., 12990., 13414., 25860., 26772., 27684., 28596.,
      13974., 14462., 14950., 15438., 15926., 16414., 16902., 17390., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      350.,   902.,   1454.,  2006.,  2558.,  3110.,  3662.,  4214.,  5156.,
      6324.,  7492.,  8660.,  2854.,  3470.,  4086.,  4702.,  5318.,  5934.,
      6550.,  7166.,  0.,     0.,     0.,     0.,     6974.,  7526.,  8078.,
      8630.,  9182.,  9734.,  10286., 10838., 19172., 20340., 21508., 22676.,
      10246., 10862., 11478., 12094., 12710., 13326., 13942., 14558., 0.,
      0.,     0.,     0.,     14028., 15260., 16492., 17724., 18956., 20188.,
      21420., 22652., 39528., 42120., 44712., 47304., 21084., 22444., 23804.,
      25164., 26524., 27884., 29244., 30604., 0.,     0.,     0.,     0.,
      8590.,  9270.,  9950.,  10630., 11310., 11990., 12670., 13350., 23428.,
      24852., 26276., 27700., 12374., 13118., 13862., 14606., 15350., 16094.,
      16838., 17582., 0.,     0.,     0.,     0.,     16750., 17430., 18110.,
      18790., 19470., 20150., 20830., 21510., 40516., 41940., 43364., 44788.,
      21302., 22046., 22790., 23534., 24278., 25022., 25766., 26510., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   13.,  8.,   4.,   5.,   14.,  10.,
      24.,  15.,  34.,  20.,  12.,  18.,  44.,  28.,  64.,  38.,  84.,  48.,
      20.,  25.,  54.,  30.,  64.,  35.,  74.,  40.,  44.,  58.,  124., 68.,
      144., 78.,  164., 88.,  36.,  45.,  94.,  50.,  104., 55.,  114., 60.,
      13.,  26.,  53.,  28.,  57.,  30.,  61.,  32.,  52.,  65.,  134., 70.,
      144., 75.,  154., 80.,  108., 138., 284., 148., 304., 158., 324., 168.,
      68.,  85.,  174., 90.,  184., 95.,  194., 100., 140., 178., 364., 188.,
      384., 198., 404., 208., 84.,  105., 214., 110., 224., 115., 234., 120.,
      25.,  50.,  101., 52.,  105., 54.,  109., 56.,  100., 125., 254., 130.,
      264., 135., 274., 140., 204., 258., 524., 268., 544., 278., 564., 288.,
      116., 145., 294., 150., 304., 155., 314., 160., 236., 298., 604., 308.,
      624., 318., 644., 328., 132., 165., 334., 170., 344., 175., 354., 180.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,  9.,   6.,   9.,   0.,   4.,   5.,   14.,  10.,
      24.,  15.,  18.,  0.,  11.,  16.,  40.,  26.,  60.,  36.,  45.,  0.,
      16.,  20.,  44.,  25., 54.,  30.,  36.,  0.,   28.,  32.,  71.,  40.,
      87.,  48.,  54.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      7.,   14.,  29.,  16., 33.,  18.,  27.,  0.,   28.,  35.,  74.,  40.,
      84.,  45.,  54.,  0.,  59.,  76.,  160., 86.,  180., 96.,  117., 0.,
      40.,  50.,  104., 55., 114., 60.,  72.,  0.,   70.,  80.,  167., 88.,
      183., 96.,  108., 0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      13.,  26.,  53.,  28., 57.,  30.,  45.,  0.,   52.,  65.,  134., 70.,
      144., 75.,  90.,  0.,  107., 136., 280., 146., 300., 156., 189., 0.,
      64.,  80.,  164., 85., 174., 90.,  108., 0.,   112., 128., 263., 136.,
      279., 144., 162., 0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   84.,   53.,   23.,   29.,
      88.,   67.,   164.,  105.,  240.,  143.,  70.,   114.,  288.,  190.,
      440.,  266.,  592.,  342.,  143.,  181.,  392.,  219.,  468.,  257.,
      544.,  295.,  310.,  418.,  896.,  494.,  1048., 570.,  1200., 646.,
      263.,  333.,  696.,  371.,  772.,  409.,  848.,  447.,  77.,   179.,
      364.,  193.,  392.,  207.,  420.,  221.,  383.,  485.,  1000., 523.,
      1076., 561.,  1152., 599.,  790.,  1026., 2112., 1102., 2264., 1178.,
      2416., 1254., 503.,  637.,  1304., 675.,  1380., 713.,  1456., 751.,
      1030., 1330., 2720., 1406., 2872., 1482., 3024., 1558., 623.,  789.,
      1608., 827.,  1684., 865.,  1760., 903.,  149.,  347.,  700.,  361.,
      728.,  375.,  756.,  389.,  743.,  941.,  1912., 979.,  1988., 1017.,
      2064., 1055., 1510., 1938., 3936., 2014., 4088., 2090., 4240., 2166.,
      863.,  1093., 2216., 1131., 2292., 1169., 2368., 1207., 1750., 2242.,
      4544., 2318., 4696., 2394., 4848., 2470., 983.,  1245., 2520., 1283.,
      2596., 1321., 2672., 1359.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   61.,   0.,    23.,   29.,
      88.,   67.,   164.,  105.,  127.,  0.,    64.,   100.,  260.,  176.,
      412.,  252.,  320.,  0.,    113.,  143.,  316.,  181.,  392.,  219.,
      265.,  0.,    203.,  233.,  520.,  295.,  644.,  357.,  403.,  0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    41.,   95.,
      196.,  109.,  224.,  123.,  193.,  0.,    203.,  257.,  544.,  295.,
      620.,  333.,  403.,  0.,    424.,  556.,  1172., 632.,  1324., 708.,
      872.,  0.,    293.,  371.,  772.,  409.,  848.,  447.,  541.,  0.,
      527.,  605.,  1264., 667.,  1388., 729.,  823.,  0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    77.,   179.,  364.,  193.,
      392.,  207.,  325.,  0.,    383.,  485.,  1000., 523.,  1076., 561.,
      679.,  0.,    784.,  1012., 2084., 1088., 2236., 1164., 1424., 0.,
      473.,  599.,  1228., 637.,  1304., 675.,  817.,  0.,    851.,  977.,
      2008., 1039., 2132., 1101., 1243., 0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,   388.,   278.,   596.,   382.,   150.,
      190.,   612.,   486.,   1204.,  782.,   1796.,  1078.,  460.,   796.,
      2056.,  1388.,  3240.,  1980.,  4424.,  2572.,  1078.,  1374.,  2980.,
      1670.,  3572.,  1966.,  4164.,  2262.,  2316.,  3164.,  6792.,  3756.,
      7976.,  4348.,  9160.,  4940.,  2006.,  2558.,  5348.,  2854.,  5940.,
      3150.,  6532.,  3446.,  510.,   1318.,  2676.,  1422.,  2884.,  1526.,
      3092.,  1630.,  2934.,  3742.,  7716.,  4038.,  8308.,  4334.,  8900.,
      4630.,  6028.,  7900.,  16264., 8492.,  17448., 9084.,  18632., 9676.,
      3862.,  4926.,  10084., 5222.,  10676., 5518.,  11268., 5814.,  7884.,
      10268., 21000., 10860., 22184., 11452., 23368., 12044., 4790.,  6110.,
      12452., 6406.,  13044., 6702.,  13636., 6998.,  990.,   2566.,  5172.,
      2670.,  5380.,  2774.,  5588.,  2878.,  5718.,  7294.,  14820., 7590.,
      15412., 7886.,  16004., 8182.,  11596., 15004., 30472., 15596., 31656.,
      16188., 32840., 16780., 6646.,  8478.,  17188., 8774.,  17780., 9070.,
      18372., 9366.,  13452., 17372., 35208., 17964., 36392., 18556., 37576.,
      19148., 7574.,  9662.,  19556., 9958.,  20148., 10254., 20740., 10550.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,   174.,  388.,   278.,  446.,   0.,    150.,   190.,
      612.,   486.,  1204.,  782.,  950.,   0.,    420.,   692.,  1848.,  1284.,
      3032.,  1876., 2404.,  0.,    846.,   1078., 2388.,  1374., 2980.,  1670.,
      2030.,  0.,    1542.,  1774., 3972.,  2262., 4948.,  2750., 3110.,  0.,
      0.,     0.,    0.,     0.,    0.,     0.,    0.,     0.,    270.,   694.,
      1428.,  798.,  1636.,  902.,  1454.,  0.,    1542.,  1966., 4164.,  2262.,
      4756.,  2558., 3110.,  0.,    3204.,  4244., 8952.,  4836., 10136., 5428.,
      6724.,  0.,    2238.,  2854., 5940.,  3150., 6532.,  3446., 4190.,  0.,
      4086.,  4702., 9828.,  5190., 10804., 5678., 6422.,  0.,    0.,     0.,
      0.,     0.,    0.,     0.,    0.,     0.,    510.,   1318., 2676.,  1422.,
      2884.,  1526., 2462.,  0.,    2934.,  3742., 7716.,  4038., 8308.,  4334.,
      5270.,  0.,    5988.,  7796., 16056., 8388., 17240., 8980., 11044., 0.,
      3630.,  4630., 9492.,  4926., 10084., 5222., 6350.,  0.,    6630.,  7630.,
      15684., 8118., 16660., 8606., 9734.,  0.,    0.,     0.,    0.,     0.,
      0.,     0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,   7.,    10.,   6.,    8.,    13.,   18.,   9.,
      12.,   19.,   26.,   12.,  16.,   7.,    8.,    9.,    10.,   25.,   28.,
      18.,   20.,   43.,   48.,  27.,   30.,   61.,   68.,   36.,   40.,   18.,
      24.,   30.,   36.,   74.,  88.,   48.,   56.,   110.,  128.,  66.,   76.,
      146.,  168.,  84.,   96.,  35.,   40.,   45.,   50.,   97.,   108.,  54.,
      60.,   115.,  128.,  63.,  70.,   133.,  148.,  72.,   80.,   74.,   88.,
      102.,  116.,  218.,  248., 120.,  136.,  254.,  288.,  138.,  156.,  290.,
      328.,  156.,  176.,  63.,  72.,   81.,   90.,   169.,  188.,  90.,   100.,
      187.,  208.,  99.,   110., 205.,  228.,  108.,  120.,  13.,   26.,   39.,
      52.,   79.,   106.,  42.,  56.,   85.,   114.,  45.,   60.,   91.,   122.,
      48.,   64.,   91.,   104., 117.,  130.,  241.,  268.,  126.,  140.,  259.,
      288.,  135.,  150.,  277., 308.,  144.,  160.,  186.,  216.,  246.,  276.,
      506.,  568.,  264.,  296., 542.,  608.,  282.,  316.,  578.,  648.,  300.,
      336.,  119.,  136.,  153., 170.,  313.,  348.,  162.,  180.,  331.,  368.,
      171.,  190.,  349.,  388., 180.,  200.,  242.,  280.,  318.,  356.,  650.,
      728.,  336.,  376.,  686., 768.,  354.,  396.,  722.,  808.,  372.,  416.,
      147.,  168.,  189.,  210., 385.,  428.,  198.,  220.,  403.,  448.,  207.,
      230.,  421.,  468.,  216., 240.,  25.,   50.,   75.,   100.,  151.,  202.,
      78.,   104.,  157.,  210., 81.,   108.,  163.,  218.,  84.,   112.,  175.,
      200.,  225.,  250.,  457., 508.,  234.,  260.,  475.,  528.,  243.,  270.,
      493.,  548.,  252.,  280., 354.,  408.,  462.,  516.,  938.,  1048., 480.,
      536.,  974.,  1088., 498., 556.,  1010., 1128., 516.,  576.,  203.,  232.,
      261.,  290.,  529.,  588., 270.,  300.,  547.,  608.,  279.,  310.,  565.,
      628.,  288.,  320.,  410., 472.,  534.,  596.,  1082., 1208., 552.,  616.,
      1118., 1248., 570.,  636., 1154., 1288., 588.,  656.,  231.,  264.,  297.,
      330.,  601.,  668.,  306., 340.,  619.,  688.,  315.,  350.,  637.,  708.,
      324.,  360.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,
      15.,  18.,  0.,   0.,   7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,
      43.,  48.,  27.,  30.,  33.,  36.,  0.,   0.,   17.,  22.,  27.,  32.,
      68.,  80.,  45.,  52.,  104., 120., 63.,  72.,  81.,  90.,  0.,   0.,
      28.,  32.,  36.,  40.,  79.,  88.,  45.,  50.,  97.,  108., 54.,  60.,
      66.,  72.,  0.,   0.,   52.,  56.,  60.,  64.,  133., 142., 75.,  80.,
      163., 174., 90.,  96.,  102., 108., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      7.,   14.,  21.,  28.,  43.,  58.,  24.,  32.,  49.,  66.,  27.,  36.,
      45.,  54.,  0.,   0.,   49.,  56.,  63.,  70.,  133., 148., 72.,  80.,
      151., 168., 81.,  90.,  99.,  108., 0.,   0.,   101., 118., 135., 152.,
      284., 320., 153., 172., 320., 360., 171., 192., 213., 234., 0.,   0.,
      70.,  80.,  90.,  100., 187., 208., 99.,  110., 205., 228., 108., 120.,
      132., 144., 0.,   0.,   130., 140., 150., 160., 313., 334., 165., 176.,
      343., 366., 180., 192., 204., 216., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      13.,  26.,  39.,  52.,  79.,  106., 42.,  56.,  85.,  114., 45.,  60.,
      75.,  90.,  0.,   0.,   91.,  104., 117., 130., 241., 268., 126., 140.,
      259., 288., 135., 150., 165., 180., 0.,   0.,   185., 214., 243., 272.,
      500., 560., 261., 292., 536., 600., 279., 312., 345., 378., 0.,   0.,
      112., 128., 144., 160., 295., 328., 153., 170., 313., 348., 162., 180.,
      198., 216., 0.,   0.,   208., 224., 240., 256., 493., 526., 255., 272.,
      523., 558., 270., 288., 306., 324., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   128.,  180.,  83.,   113.,  41.,   47.,   53.,   59.,
      160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,  440.,  492.,
      263.,  293.,  106.,  150.,  194.,  238.,  496.,  600.,  334.,  394.,
      776.,  912.,  474.,  550.,  1056., 1224., 614.,  706.,  257.,  295.,
      333.,  371.,  720.,  804.,  403.,  449.,  860.,  960.,  473.,  527.,
      1000., 1116., 543.,  605.,  538.,  646.,  754.,  862.,  1616., 1848.,
      894.,  1018., 1896., 2160., 1034., 1174., 2176., 2472., 1174., 1330.,
      473.,  543.,  613.,  683.,  1280., 1428., 683.,  761.,  1420., 1584.,
      753.,  839.,  1560., 1740., 823.,  917.,  77.,   179.,  281.,  383.,
      568.,  780.,  303.,  413.,  612.,  840.,  325.,  443.,  656.,  900.,
      347.,  473.,  689.,  791.,  893.,  995.,  1840., 2052., 963.,  1073.,
      1980., 2208., 1033., 1151., 2120., 2364., 1103., 1229., 1402., 1638.,
      1874., 2110., 3856., 4344., 2014., 2266., 4136., 4656., 2154., 2422.,
      4416., 4968., 2294., 2578., 905.,  1039., 1173., 1307., 2400., 2676.,
      1243., 1385., 2540., 2832., 1313., 1463., 2680., 2988., 1383., 1541.,
      1834., 2134., 2434., 2734., 4976., 5592., 2574., 2890., 5256., 5904.,
      2714., 3046., 5536., 6216., 2854., 3202., 1121., 1287., 1453., 1619.,
      2960., 3300., 1523., 1697., 3100., 3456., 1593., 1775., 3240., 3612.,
      1663., 1853., 149.,  347.,  545.,  743.,  1096., 1500., 567.,  773.,
      1140., 1560., 589.,  803.,  1184., 1620., 611.,  833.,  1337., 1535.,
      1733., 1931., 3520., 3924., 1803., 2009., 3660., 4080., 1873., 2087.,
      3800., 4236., 1943., 2165., 2698., 3126., 3554., 3982., 7216., 8088.,
      3694., 4138., 7496., 8400., 3834., 4294., 7776., 8712., 3974., 4450.,
      1553., 1783., 2013., 2243., 4080., 4548., 2083., 2321., 4220., 4704.,
      2153., 2399., 4360., 4860., 2223., 2477., 3130., 3622., 4114., 4606.,
      8336., 9336., 4254., 4762., 8616., 9648., 4394., 4918., 8896., 9960.,
      4534., 5074., 1769., 2031., 2293., 2555., 4640., 5172., 2363., 2633.,
      4780., 5328., 2433., 2711., 4920., 5484., 2503., 2789.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   105.,  127.,  0.,    0.,    41.,   47.,   53.,   59.,
      160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,  237.,  259.,
      0.,    0.,    100.,  136.,  172.,  208.,  452.,  540.,  312.,  364.,
      732.,  852.,  452.,  520.,  588.,  656.,  0.,    0.,    203.,  233.,
      263.,  293.,  580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,
      495.,  541.,  0.,    0.,    383.,  413.,  443.,  473.,  988.,  1056.,
      561.,  599.,  1224., 1308., 679.,  725.,  771.,  817.,  0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    41.,   95.,   149.,  203.,
      304.,  420.,  171.,  233.,  348.,  480.,  193.,  263.,  333.,  403.,
      0.,    0.,    365.,  419.,  473.,  527.,  1000., 1116., 543.,  605.,
      1140., 1272., 613.,  683.,  753.,  823.,  0.,    0.,    748.,  880.,
      1012., 1144., 2132., 2412., 1152., 1300., 2412., 2724., 1292., 1456.,
      1620., 1784., 0.,    0.,    527.,  605.,  683.,  761.,  1420., 1584.,
      753.,  839.,  1560., 1740., 823.,  917.,  1011., 1105., 0.,    0.,
      995.,  1073., 1151., 1229., 2404., 2568., 1269., 1355., 2640., 2820.,
      1387., 1481., 1575., 1669., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    77.,   179.,  281.,  383.,  568.,  780.,  303.,  413.,
      612.,  840.,  325.,  443.,  561.,  679.,  0.,    0.,    689.,  791.,
      893.,  995.,  1840., 2052., 963.,  1073., 1980., 2208., 1033., 1151.,
      1269., 1387., 0.,    0.,    1396., 1624., 1852., 2080., 3812., 4284.,
      1992., 2236., 4092., 4596., 2132., 2392., 2652., 2912., 0.,    0.,
      851.,  977.,  1103., 1229., 2260., 2520., 1173., 1307., 2400., 2676.,
      1243., 1385., 1527., 1669., 0.,    0.,    1607., 1733., 1859., 1985.,
      3820., 4080., 1977., 2111., 4056., 4332., 2095., 2237., 2379., 2521.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   596.,
      868.,   446.,   614.,   932.,   1332.,  614.,   846.,   270.,   310.,
      350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,  1454.,
      1622.,  3332.,  3732.,  2006.,  2238.,  700.,   1036.,  1372.,  1708.,
      3592.,  4392.,  2476.,  2940.,  5800.,  6856.,  3580.,  4172.,  8008.,
      9320.,  4684.,  5404.,  1966.,  2262.,  2558.,  2854.,  5540.,  6196.,
      3110.,  3470.,  6644.,  7428.,  3662.,  4086.,  7748.,  8660.,  4214.,
      4702.,  4092.,  4940.,  5788.,  6636.,  12424., 14248., 6892.,  7868.,
      14632., 16712., 7996.,  9100.,  16840., 19176., 9100.,  10332., 3662.,
      4214.,  4766.,  5318.,  9956.,  11124., 5318.,  5934.,  11060., 12356.,
      5870.,  6550.,  12164., 13588., 6422.,  7166.,  510.,   1318.,  2126.,
      2934.,  4292.,  5972.,  2294.,  3166.,  4628.,  6436.,  2462.,  3398.,
      4964.,  6900.,  2630.,  3630.,  5358.,  6166.,  6974.,  7782.,  14372.,
      16052., 7526.,  8398.,  15476., 17284., 8078.,  9014.,  16580., 18516.,
      8630.,  9630.,  10876., 12748., 14620., 16492., 30088., 33960., 15724.,
      17724., 32296., 36424., 16828., 18956., 34504., 38888., 17932., 20188.,
      7054.,  8118.,  9182.,  10246., 18788., 20980., 9734.,  10862., 19892.,
      22212., 10286., 11478., 20996., 23444., 10838., 12094., 14268., 16652.,
      19036., 21420., 38920., 43816., 20140., 22652., 41128., 46280., 21244.,
      23884., 43336., 48744., 22348., 25116., 8750.,  10070., 11390., 12710.,
      23204., 25908., 11942., 13326., 24308., 27140., 12494., 13942., 25412.,
      28372., 13046., 14558., 990.,   2566.,  4142.,  5718.,  8324.,  11540.,
      4310.,  5950.,  8660.,  12004., 4478.,  6182.,  8996.,  12468., 4646.,
      6414.,  10446., 12022., 13598., 15174., 27620., 30836., 14150., 15790.,
      28724., 32068., 14702., 16406., 29828., 33300., 15254., 17022., 21052.,
      24460., 27868., 31276., 56584., 63528., 28972., 32508., 58792., 65992.,
      30076., 33740., 61000., 68456., 31180., 34972., 12142., 13974., 15806.,
      17638., 32036., 35764., 16358., 18254., 33140., 36996., 16910., 18870.,
      34244., 38228., 17462., 19486., 24444., 28364., 32284., 36204., 65416.,
      73384., 33388., 37436., 67624., 75848., 34492., 38668., 69832., 78312.,
      35596., 39900., 13838., 15926., 18014., 20102., 36452., 40692., 18566.,
      20718., 37556., 41924., 19118., 21334., 38660., 43156., 19670., 21950.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   596.,
      868.,   446.,   614.,   782.,   950.,   0.,     0.,     270.,   310.,
      350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,  1454.,
      1622.,  1790.,  1958.,  0.,     0.,     660.,   932.,   1204.,  1476.,
      3256.,  3928.,  2308.,  2708.,  5464.,  6392.,  3412.,  3940.,  4468.,
      4996.,  0.,     0.,     1542.,  1774.,  2006.,  2238.,  4436.,  4964.,
      2558.,  2854.,  5540.,  6196.,  3110.,  3470.,  3830.,  4190.,  0.,
      0.,     2934.,  3166.,  3398.,  3630.,  7604.,  8132.,  4334.,  4630.,
      9476.,  10132., 5270.,  5630.,  5990.,  6350.,  0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     270.,   694.,   1118.,
      1542.,  2276.,  3188.,  1286.,  1774.,  2612.,  3652.,  1454.,  2006.,
      2558.,  3110.,  0.,     0.,     2814.,  3238.,  3662.,  4086.,  7748.,
      8660.,  4214.,  4702.,  8852.,  9892.,  4766.,  5318.,  5870.,  6422.,
      0.,     0.,     5748.,  6788.,  7828.,  8868.,  16504., 18712., 8932.,
      10100., 18712., 21176., 10036., 11332., 12628., 13924., 0.,     0.,
      4086.,  4702.,  5318.,  5934.,  11060., 12356., 5870.,  6550.,  12164.,
      13588., 6422.,  7166.,  7910.,  8654.,  0.,     0.,     7782.,  8398.,
      9014.,  9630.,  18836., 20132., 9950.,  10630., 20708., 22132., 10886.,
      11630., 12374., 13118., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     510.,   1318.,  2126.,  2934.,  4292.,  5972.,
      2294.,  3166.,  4628.,  6436.,  2462.,  3398.,  4334.,  5270.,  0.,
      0.,     5358.,  6166.,  6974.,  7782.,  14372., 16052., 7526.,  8398.,
      15476., 17284., 8078.,  9014.,  9950.,  10886., 0.,     0.,     10836.,
      12644., 14452., 16260., 29752., 33496., 15556., 17492., 31960., 35960.,
      16660., 18724., 20788., 22852., 0.,     0.,     6630.,  7630.,  8630.,
      9630.,  17684., 19748., 9182.,  10246., 18788., 20980., 9734.,  10862.,
      11990., 13118., 0.,     0.,     12630., 13630., 14630., 15630., 30068.,
      32132., 15566., 16630., 31940., 34132., 16502., 17630., 18758., 19886.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    5.,    6.,    7.,    8.,    11.,   14.,
      17.,   20.,   10.,   12.,   14.,   16.,   21.,   26.,   31.,   36.,
      15.,   18.,   21.,   24.,   31.,   38.,   45.,   52.,   20.,   24.,
      28.,   32.,   13.,   14.,   15.,   16.,   17.,   18.,   19.,   20.,
      47.,   50.,   53.,   56.,   34.,   36.,   38.,   40.,   81.,   86.,
      91.,   96.,   51.,   54.,   57.,   60.,   115.,  122.,  129.,  136.,
      68.,   72.,   76.,   80.,   30.,   36.,   42.,   48.,   54.,   60.,
      66.,   72.,   134.,  148.,  162.,  176.,  88.,   96.,   104.,  112.,
      202.,  220.,  238.,  256.,  122.,  132.,  142.,  152.,  270.,  292.,
      314.,  336.,  156.,  168.,  180.,  192.,  65.,   70.,   75.,   80.,
      85.,   90.,   95.,   100.,  183.,  194.,  205.,  216.,  102.,  108.,
      114.,  120.,  217.,  230.,  243.,  256.,  119.,  126.,  133.,  140.,
      251.,  266.,  281.,  296.,  136.,  144.,  152.,  160.,  134.,  148.,
      162.,  176.,  190.,  204.,  218.,  232.,  406.,  436.,  466.,  496.,
      224.,  240.,  256.,  272.,  474.,  508.,  542.,  576.,  258.,  276.,
      294.,  312.,  542.,  580.,  618.,  656.,  292.,  312.,  332.,  352.,
      117.,  126.,  135.,  144.,  153.,  162.,  171.,  180.,  319.,  338.,
      357.,  376.,  170.,  180.,  190.,  200.,  353.,  374.,  395.,  416.,
      187.,  198.,  209.,  220.,  387.,  410.,  433.,  456.,  204.,  216.,
      228.,  240.,  13.,   26.,   39.,   52.,   65.,   78.,   91.,   104.,
      131.,  158.,  185.,  212.,  70.,   84.,   98.,   112.,  141.,  170.,
      199.,  228.,  75.,   90.,   105.,  120.,  151.,  182.,  213.,  244.,
      80.,   96.,   112.,  128.,  169.,  182.,  195.,  208.,  221.,  234.,
      247.,  260.,  455.,  482.,  509.,  536.,  238.,  252.,  266.,  280.,
      489.,  518.,  547.,  576.,  255.,  270.,  285.,  300.,  523.,  554.,
      585.,  616.,  272.,  288.,  304.,  320.,  342.,  372.,  402.,  432.,
      462.,  492.,  522.,  552.,  950.,  1012., 1074., 1136., 496.,  528.,
      560.,  592.,  1018., 1084., 1150., 1216., 530.,  564.,  598.,  632.,
      1086., 1156., 1226., 1296., 564.,  600.,  636.,  672.,  221.,  238.,
      255.,  272.,  289.,  306.,  323.,  340.,  591.,  626.,  661.,  696.,
      306.,  324.,  342.,  360.,  625.,  662.,  699.,  736.,  323.,  342.,
      361.,  380.,  659.,  698.,  737.,  776.,  340.,  360.,  380.,  400.,
      446.,  484.,  522.,  560.,  598.,  636.,  674.,  712.,  1222., 1300.,
      1378., 1456., 632.,  672.,  712.,  752.,  1290., 1372., 1454., 1536.,
      666.,  708.,  750.,  792.,  1358., 1444., 1530., 1616., 700.,  744.,
      788.,  832.,  273.,  294.,  315.,  336.,  357.,  378.,  399.,  420.,
      727.,  770.,  813.,  856.,  374.,  396.,  418.,  440.,  761.,  806.,
      851.,  896.,  391.,  414.,  437.,  460.,  795.,  842.,  889.,  936.,
      408.,  432.,  456.,  480.,  25.,   50.,   75.,   100.,  125.,  150.,
      175.,  200.,  251.,  302.,  353.,  404.,  130.,  156.,  182.,  208.,
      261.,  314.,  367.,  420.,  135.,  162.,  189.,  216.,  271.,  326.,
      381.,  436.,  140.,  168.,  196.,  224.,  325.,  350.,  375.,  400.,
      425.,  450.,  475.,  500.,  863.,  914.,  965.,  1016., 442.,  468.,
      494.,  520.,  897.,  950.,  1003., 1056., 459.,  486.,  513.,  540.,
      931.,  986.,  1041., 1096., 476.,  504.,  532.,  560.,  654.,  708.,
      762.,  816.,  870.,  924.,  978.,  1032., 1766., 1876., 1986., 2096.,
      904.,  960.,  1016., 1072., 1834., 1948., 2062., 2176., 938.,  996.,
      1054., 1112., 1902., 2020., 2138., 2256., 972.,  1032., 1092., 1152.,
      377.,  406.,  435.,  464.,  493.,  522.,  551.,  580.,  999.,  1058.,
      1117., 1176., 510.,  540.,  570.,  600.,  1033., 1094., 1155., 1216.,
      527.,  558.,  589.,  620.,  1067., 1130., 1193., 1256., 544.,  576.,
      608.,  640.,  758.,  820.,  882.,  944.,  1006., 1068., 1130., 1192.,
      2038., 2164., 2290., 2416., 1040., 1104., 1168., 1232., 2106., 2236.,
      2366., 2496., 1074., 1140., 1206., 1272., 2174., 2308., 2442., 2576.,
      1108., 1176., 1244., 1312., 429.,  462.,  495.,  528.,  561.,  594.,
      627.,  660.,  1135., 1202., 1269., 1336., 578.,  612.,  646.,  680.,
      1169., 1238., 1307., 1376., 595.,  630.,  665.,  700.,  1203., 1274.,
      1345., 1416., 612.,  648.,  684.,  720.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    5.,    6.,    7.,    8.,    11.,   14.,  17.,
      20.,   10.,   12.,   14.,   16.,   21.,   26.,   31.,   36.,   15.,  18.,
      21.,   24.,   27.,   30.,   33.,   36.,   0.,    0.,    0.,    0.,   13.,
      14.,   15.,   16.,   17.,   18.,   19.,   20.,   47.,   50.,   53.,  56.,
      34.,   36.,   38.,   40.,   81.,   86.,   91.,   96.,   51.,   54.,  57.,
      60.,   63.,   66.,   69.,   72.,   0.,    0.,    0.,    0.,    29.,  34.,
      39.,   44.,   49.,   54.,   59.,   64.,   124.,  136.,  148.,  160., 83.,
      90.,   97.,   104.,  192.,  208.,  224.,  240.,  117.,  126.,  135., 144.,
      153.,  162.,  171.,  180.,  0.,    0.,    0.,    0.,    52.,   56.,  60.,
      64.,   68.,   72.,   76.,   80.,   149.,  158.,  167.,  176.,  85.,  90.,
      95.,   100.,  183.,  194.,  205.,  216.,  102.,  108.,  114.,  120., 126.,
      132.,  138.,  144.,  0.,    0.,    0.,    0.,    100.,  104.,  108., 112.,
      116.,  120.,  124.,  128.,  257.,  266.,  275.,  284.,  145.,  150., 155.,
      160.,  315.,  326.,  337.,  348.,  174.,  180.,  186.,  192.,  198., 204.,
      210.,  216.,  0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    7.,    14.,   21.,   28.,   35.,  42.,
      49.,   56.,   71.,   86.,   101.,  116.,  40.,   48.,   56.,   64.,  81.,
      98.,   115.,  132.,  45.,   54.,   63.,   72.,   81.,   90.,   99.,  108.,
      0.,    0.,    0.,    0.,    91.,   98.,   105.,  112.,  119.,  126., 133.,
      140.,  251.,  266.,  281.,  296.,  136.,  144.,  152.,  160.,  285., 302.,
      319.,  336.,  153.,  162.,  171.,  180.,  189.,  198.,  207.,  216., 0.,
      0.,    0.,    0.,    185.,  202.,  219.,  236.,  253.,  270.,  287., 304.,
      532.,  568.,  604.,  640.,  287.,  306.,  325.,  344.,  600.,  640., 680.,
      720.,  321.,  342.,  363.,  384.,  405.,  426.,  447.,  468.,  0.,   0.,
      0.,    0.,    130.,  140.,  150.,  160.,  170.,  180.,  190.,  200., 353.,
      374.,  395.,  416.,  187.,  198.,  209.,  220.,  387.,  410.,  433., 456.,
      204.,  216.,  228.,  240.,  252.,  264.,  276.,  288.,  0.,    0.,   0.,
      0.,    250.,  260.,  270.,  280.,  290.,  300.,  310.,  320.,  605., 626.,
      647.,  668.,  319.,  330.,  341.,  352.,  663.,  686.,  709.,  732., 348.,
      360.,  372.,  384.,  396.,  408.,  420.,  432.,  0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   13.,
      26.,   39.,   52.,   65.,   78.,   91.,   104.,  131.,  158.,  185., 212.,
      70.,   84.,   98.,   112.,  141.,  170.,  199.,  228.,  75.,   90.,  105.,
      120.,  135.,  150.,  165.,  180.,  0.,    0.,    0.,    0.,    169., 182.,
      195.,  208.,  221.,  234.,  247.,  260.,  455.,  482.,  509.,  536., 238.,
      252.,  266.,  280.,  489.,  518.,  547.,  576.,  255.,  270.,  285., 300.,
      315.,  330.,  345.,  360.,  0.,    0.,    0.,    0.,    341.,  370., 399.,
      428.,  457.,  486.,  515.,  544.,  940.,  1000., 1060., 1120., 491., 522.,
      553.,  584.,  1008., 1072., 1136., 1200., 525.,  558.,  591.,  624., 657.,
      690.,  723.,  756.,  0.,    0.,    0.,    0.,    208.,  224.,  240., 256.,
      272.,  288.,  304.,  320.,  557.,  590.,  623.,  656.,  289.,  306., 323.,
      340.,  591.,  626.,  661.,  696.,  306.,  324.,  342.,  360.,  378., 396.,
      414.,  432.,  0.,    0.,    0.,    0.,    400.,  416.,  432.,  448., 464.,
      480.,  496.,  512.,  953.,  986.,  1019., 1052., 493.,  510.,  527., 544.,
      1011., 1046., 1081., 1116., 522.,  540.,  558.,  576.,  594.,  612., 630.,
      648.,  0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,   0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    29.,    35.,    41.,    47.,    64.,
      84.,    104.,   124.,   67.,    81.,    95.,    109.,   140.,   176.,
      212.,   248.,   105.,   127.,   149.,   171.,   216.,   268.,   320.,
      372.,   143.,   173.,   203.,   233.,   77.,    83.,    89.,    95.,
      101.,   107.,   113.,   119.,   304.,   324.,   344.,   364.,   235.,
      249.,   263.,   277.,   572.,   608.,   644.,   680.,   369.,   391.,
      413.,   435.,   840.,   892.,   944.,   996.,   503.,   533.,   563.,
      593.,   178.,   222.,   266.,   310.,   354.,   398.,   442.,   486.,
      912.,   1016.,  1120.,  1224.,  622.,   682.,   742.,   802.,   1448.,
      1584.,  1720.,  1856.,  890.,   966.,   1042.,  1118.,  1984.,  2152.,
      2320.,  2488.,  1158.,  1250.,  1342.,  1434.,  485.,   523.,   561.,
      599.,   637.,   675.,   713.,   751.,   1376.,  1460.,  1544.,  1628.,
      771.,   817.,   863.,   909.,   1644.,  1744.,  1844.,  1944.,  905.,
      959.,   1013.,  1067.,  1912.,  2028.,  2144.,  2260.,  1039.,  1101.,
      1163.,  1225.,  994.,   1102.,  1210.,  1318.,  1426.,  1534.,  1642.,
      1750.,  3056.,  3288.,  3520.,  3752.,  1694.,  1818.,  1942.,  2066.,
      3592.,  3856.,  4120.,  4384.,  1962.,  2102.,  2242.,  2382.,  4128.,
      4424.,  4720.,  5016.,  2230.,  2386.,  2542.,  2698.,  893.,   963.,
      1033.,  1103.,  1173.,  1243.,  1313.,  1383.,  2448.,  2596.,  2744.,
      2892.,  1307.,  1385.,  1463.,  1541.,  2716.,  2880.,  3044.,  3208.,
      1441.,  1527.,  1613.,  1699.,  2984.,  3164.,  3344.,  3524.,  1575.,
      1669.,  1763.,  1857.,  77.,    179.,   281.,   383.,   485.,   587.,
      689.,   791.,   976.,   1188.,  1400.,  1612.,  523.,   633.,   743.,
      853.,   1052.,  1280.,  1508.,  1736.,  561.,   679.,   797.,   915.,
      1128.,  1372.,  1616.,  1860.,  599.,   725.,   851.,   977.,   1301.,
      1403.,  1505.,  1607.,  1709.,  1811.,  1913.,  2015.,  3520.,  3732.,
      3944.,  4156.,  1843.,  1953.,  2063.,  2173.,  3788.,  4016.,  4244.,
      4472.,  1977.,  2095.,  2213.,  2331.,  4056.,  4300.,  4544.,  4788.,
      2111.,  2237.,  2363.,  2489.,  2626.,  2862.,  3098.,  3334.,  3570.,
      3806.,  4042.,  4278.,  7344.,  7832.,  8320.,  8808.,  3838.,  4090.,
      4342.,  4594.,  7880.,  8400.,  8920.,  9440.,  4106.,  4374.,  4642.,
      4910.,  8416.,  8968.,  9520.,  10072., 4374.,  4658.,  4942.,  5226.,
      1709.,  1843.,  1977.,  2111.,  2245.,  2379.,  2513.,  2647.,  4592.,
      4868.,  5144.,  5420.,  2379.,  2521.,  2663.,  2805.,  4860.,  5152.,
      5444.,  5736.,  2513.,  2663.,  2813.,  2963.,  5128.,  5436.,  5744.,
      6052.,  2647.,  2805.,  2963.,  3121.,  3442.,  3742.,  4042.,  4342.,
      4642.,  4942.,  5242.,  5542.,  9488.,  10104., 10720., 11336., 4910.,
      5226.,  5542.,  5858.,  10024., 10672., 11320., 11968., 5178.,  5510.,
      5842.,  6174.,  10560., 11240., 11920., 12600., 5446.,  5794.,  6142.,
      6490.,  2117.,  2283.,  2449.,  2615.,  2781.,  2947.,  3113.,  3279.,
      5664.,  6004.,  6344.,  6684.,  2915.,  3089.,  3263.,  3437.,  5932.,
      6288.,  6644.,  7000.,  3049.,  3231.,  3413.,  3595.,  6200.,  6572.,
      6944.,  7316.,  3183.,  3373.,  3563.,  3753.,  149.,   347.,   545.,
      743.,   941.,   1139.,  1337.,  1535.,  1888.,  2292.,  2696.,  3100.,
      979.,   1185.,  1391.,  1597.,  1964.,  2384.,  2804.,  3224.,  1017.,
      1231.,  1445.,  1659.,  2040.,  2476.,  2912.,  3348.,  1055.,  1277.,
      1499.,  1721.,  2525.,  2723.,  2921.,  3119.,  3317.,  3515.,  3713.,
      3911.,  6736.,  7140.,  7544.,  7948.,  3451.,  3657.,  3863.,  4069.,
      7004.,  7424.,  7844.,  8264.,  3585.,  3799.,  4013.,  4227.,  7272.,
      7708.,  8144.,  8580.,  3719.,  3941.,  4163.,  4385.,  5074.,  5502.,
      5930.,  6358.,  6786.,  7214.,  7642.,  8070.,  13776., 14648., 15520.,
      16392., 7054.,  7498.,  7942.,  8386.,  14312., 15216., 16120., 17024.,
      7322.,  7782.,  8242.,  8702.,  14848., 15784., 16720., 17656., 7590.,
      8066.,  8542.,  9018.,  2933.,  3163.,  3393.,  3623.,  3853.,  4083.,
      4313.,  4543.,  7808.,  8276.,  8744.,  9212.,  3987.,  4225.,  4463.,
      4701.,  8076.,  8560.,  9044.,  9528.,  4121.,  4367.,  4613.,  4859.,
      8344.,  8844.,  9344.,  9844.,  4255.,  4509.,  4763.,  5017.,  5890.,
      6382.,  6874.,  7366.,  7858.,  8350.,  8842.,  9334.,  15920., 16920.,
      17920., 18920., 8126.,  8634.,  9142.,  9650.,  16456., 17488., 18520.,
      19552., 8394.,  8918.,  9442.,  9966.,  16992., 18056., 19120., 20184.,
      8662.,  9202.,  9742.,  10282., 3341.,  3603.,  3865.,  4127.,  4389.,
      4651.,  4913.,  5175.,  8880.,  9412.,  9944.,  10476., 4523.,  4793.,
      5063.,  5333.,  9148.,  9696.,  10244., 10792., 4657.,  4935.,  5213.,
      5491.,  9416.,  9980.,  10544., 11108., 4791.,  5077.,  5363.,  5649.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  140.,  176.,  212.,  248.,
      105.,  127.,  149.,  171.,  193.,  215.,  237.,  259.,  0.,    0.,
      0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,
      304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,  572.,  608.,
      644.,  680.,  369.,  391.,  413.,  435.,  457.,  479.,  501.,  523.,
      0.,    0.,    0.,    0.,    172.,  208.,  244.,  280.,  316.,  352.,
      388.,  424.,  836.,  924.,  1012., 1100., 584.,  636.,  688.,  740.,
      1372., 1492., 1612., 1732., 852.,  920.,  988.,  1056., 1124., 1192.,
      1260., 1328., 0.,    0.,    0.,    0.,    383.,  413.,  443.,  473.,
      503.,  533.,  563.,  593.,  1108., 1176., 1244., 1312., 637.,  675.,
      713.,  751.,  1376., 1460., 1544., 1628., 771.,  817.,  863.,  909.,
      955.,  1001., 1047., 1093., 0.,    0.,    0.,    0.,    743.,  773.,
      803.,  833.,  863.,  893.,  923.,  953.,  1924., 1992., 2060., 2128.,
      1093., 1131., 1169., 1207., 2384., 2468., 2552., 2636., 1323., 1369.,
      1415., 1461., 1507., 1553., 1599., 1645., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    41.,   95.,   149.,  203.,  257.,  311.,  365.,  419.,
      520.,  636.,  752.,  868.,  295.,  357.,  419.,  481.,  596.,  728.,
      860.,  992.,  333.,  403.,  473.,  543.,  613.,  683.,  753.,  823.,
      0.,    0.,    0.,    0.,    689.,  743.,  797.,  851.,  905.,  959.,
      1013., 1067., 1912., 2028., 2144., 2260., 1039., 1101., 1163., 1225.,
      2180., 2312., 2444., 2576., 1173., 1243., 1313., 1383., 1453., 1523.,
      1593., 1663., 0.,    0.,    0.,    0.,    1396., 1528., 1660., 1792.,
      1924., 2056., 2188., 2320., 4052., 4332., 4612., 4892., 2192., 2340.,
      2488., 2636., 4588., 4900., 5212., 5524., 2460., 2624., 2788., 2952.,
      3116., 3280., 3444., 3608., 0.,    0.,    0.,    0.,    995.,  1073.,
      1151., 1229., 1307., 1385., 1463., 1541., 2716., 2880., 3044., 3208.,
      1441., 1527., 1613., 1699., 2984., 3164., 3344., 3524., 1575., 1669.,
      1763., 1857., 1951., 2045., 2139., 2233., 0.,    0.,    0.,    0.,
      1931., 2009., 2087., 2165., 2243., 2321., 2399., 2477., 4684., 4848.,
      5012., 5176., 2473., 2559., 2645., 2731., 5144., 5324., 5504., 5684.,
      2703., 2797., 2891., 2985., 3079., 3173., 3267., 3361., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    77.,   179.,  281.,  383.,  485.,  587.,
      689.,  791.,  976.,  1188., 1400., 1612., 523.,  633.,  743.,  853.,
      1052., 1280., 1508., 1736., 561.,  679.,  797.,  915.,  1033., 1151.,
      1269., 1387., 0.,    0.,    0.,    0.,    1301., 1403., 1505., 1607.,
      1709., 1811., 1913., 2015., 3520., 3732., 3944., 4156., 1843., 1953.,
      2063., 2173., 3788., 4016., 4244., 4472., 1977., 2095., 2213., 2331.,
      2449., 2567., 2685., 2803., 0.,    0.,    0.,    0.,    2620., 2848.,
      3076., 3304., 3532., 3760., 3988., 4216., 7268., 7740., 8212., 8684.,
      3800., 4044., 4288., 4532., 7804., 8308., 8812., 9316., 4068., 4328.,
      4588., 4848., 5108., 5368., 5628., 5888., 0.,    0.,    0.,    0.,
      1607., 1733., 1859., 1985., 2111., 2237., 2363., 2489., 4324., 4584.,
      4844., 5104., 2245., 2379., 2513., 2647., 4592., 4868., 5144., 5420.,
      2379., 2521., 2663., 2805., 2947., 3089., 3231., 3373., 0.,    0.,
      0.,    0.,    3119., 3245., 3371., 3497., 3623., 3749., 3875., 4001.,
      7444., 7704., 7964., 8224., 3853., 3987., 4121., 4255., 7904., 8180.,
      8456., 8732., 4083., 4225., 4367., 4509., 4651., 4793., 4935., 5077.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    190.,   230.,   270.,   310.,
      420.,    564.,    708.,    852.,    486.,   590.,   694.,   798.,
      1012.,   1284.,   1556.,   1828.,   782.,   950.,   1118.,  1286.,
      1604.,   2004.,   2404.,   2804.,   1078.,  1310.,  1542.,  1774.,
      510.,    550.,    590.,    630.,    670.,   710.,   750.,   790.,
      2148.,   2292.,   2436.,   2580.,   1734.,  1838.,  1942.,  2046.,
      4276.,   4548.,   4820.,   5092.,   2798.,  2966.,  3134.,  3302.,
      6404.,   6804.,   7204.,   7604.,   3862.,  4094.,  4326.,  4558.,
      1180.,   1516.,   1852.,   2188.,   2524.,  2860.,  3196.,  3532.,
      6664.,   7464.,   8264.,   9064.,   4652.,  5116.,  5580.,  6044.,
      10920.,  11976.,  13032.,  14088.,  6780.,  7372.,  7964.,  8556.,
      15176.,  16488.,  17800.,  19112.,  8908.,  9628.,  10348., 11068.,
      3742.,   4038.,   4334.,   4630.,   4926.,  5222.,  5518.,  5814.,
      10660.,  11316.,  11972.,  12628.,  5990.,  6350.,  6710.,  7070.,
      12788.,  13572.,  14356.,  15140.,  7054.,  7478.,  7902.,  8326.,
      14916.,  15828.,  16740.,  17652.,  8118.,  8606.,  9094.,  9582.,
      7644.,   8492.,   9340.,   10188.,  11036., 11884., 12732., 13580.,
      23688.,  25512.,  27336.,  29160.,  13164., 14140., 15116., 16092.,
      27944.,  30024.,  32104.,  34184.,  15292., 16396., 17500., 18604.,
      32200.,  34536.,  36872.,  39208.,  17420., 18652., 19884., 21116.,
      6974.,   7526.,   8078.,   8630.,   9182.,  9734.,  10286., 10838.,
      19172.,  20340.,  21508.,  22676.,  10246., 10862., 11478., 12094.,
      21300.,  22596.,  23892.,  25188.,  11310., 11990., 12670., 13350.,
      23428.,  24852.,  26276.,  27700.,  12374., 13118., 13862., 14606.,
      510.,    1318.,   2126.,   2934.,   3742.,  4550.,  5358.,  6166.,
      7524.,   9204.,   10884.,  12564.,  4038.,  4910.,  5782.,  6654.,
      8116.,   9924.,   11732.,  13540.,  4334.,  5270.,  6206.,  7142.,
      8708.,   10644.,  12580.,  14516.,  4630.,  5630.,  6630.,  7630.,
      10206.,  11014.,  11822.,  12630.,  13438., 14246., 15054., 15862.,
      27684.,  29364.,  31044.,  32724.,  14502., 15374., 16246., 17118.,
      29812.,  31620.,  33428.,  35236.,  15566., 16502., 17438., 18374.,
      31940.,  33876.,  35812.,  37748.,  16630., 17630., 18630., 19630.,
      20572.,  22444.,  24316.,  26188.,  28060., 29932., 31804., 33676.,
      57736.,  61608.,  65480.,  69352.,  30188., 32188., 34188., 36188.,
      61992.,  66120.,  70248.,  74376.,  32316., 34444., 36572., 38700.,
      66248.,  70632.,  75016.,  79400.,  34444., 36700., 38956., 41212.,
      13438.,  14502.,  15566.,  16630.,  17694., 18758., 19822., 20886.,
      36196.,  38388.,  40580.,  42772.,  18758., 19886., 21014., 22142.,
      38324.,  40644.,  42964.,  45284.,  19822., 21014., 22206., 23398.,
      40452.,  42900.,  45348.,  47796.,  20886., 22142., 23398., 24654.,
      27036.,  29420.,  31804.,  34188.,  36572., 38956., 41340., 43724.,
      74760.,  79656.,  84552.,  89448.,  38700., 41212., 43724., 46236.,
      79016.,  84168.,  89320.,  94472.,  40828., 43468., 46108., 48748.,
      83272.,  88680.,  94088.,  99496.,  42956., 45724., 48492., 51260.,
      16670.,  17990.,  19310.,  20630.,  21950., 23270., 24590., 25910.,
      44708.,  47412.,  50116.,  52820.,  23014., 24398., 25782., 27166.,
      46836.,  49668.,  52500.,  55332.,  24078., 25526., 26974., 28422.,
      48964.,  51924.,  54884.,  57844.,  25142., 26654., 28166., 29678.,
      990.,    2566.,   4142.,   5718.,   7294.,  8870.,  10446., 12022.,
      14628.,  17844.,  21060.,  24276.,  7590.,  9230.,  10870., 12510.,
      15220.,  18564.,  21908.,  25252.,  7886.,  9590.,  11294., 12998.,
      15812.,  19284.,  22756.,  26228.,  8182.,  9950.,  11718., 13486.,
      19902.,  21478.,  23054.,  24630.,  26206., 27782., 29358., 30934.,
      53220.,  56436.,  59652.,  62868.,  27270., 28910., 30550., 32190.,
      55348.,  58692.,  62036.,  65380.,  28334., 30038., 31742., 33446.,
      57476.,  60948.,  64420.,  67892.,  29398., 31166., 32934., 34702.,
      39964.,  43372.,  46780.,  50188.,  53596., 57004., 60412., 63820.,
      108808., 115752., 122696., 129640., 55724., 59260., 62796., 66332.,
      113064., 120264., 127464., 134664., 57852., 61516., 65180., 68844.,
      117320., 124776., 132232., 139688., 59980., 63772., 67564., 71356.,
      23134.,  24966.,  26798.,  28630.,  30462., 32294., 34126., 35958.,
      61732.,  65460.,  69188.,  72916.,  31526., 33422., 35318., 37214.,
      63860.,  67716.,  71572.,  75428.,  32590., 34550., 36510., 38470.,
      65988.,  69972.,  73956.,  77940.,  33654., 35678., 37702., 39726.,
      46428.,  50348.,  54268.,  58188.,  62108., 66028., 69948., 73868.,
      125832., 133800., 141768., 149736., 64236., 68284., 72332., 76380.,
      130088., 138312., 146536., 154760., 66364., 70540., 74716., 78892.,
      134344., 142824., 151304., 159784., 68492., 72796., 77100., 81404.,
      26366.,  28454.,  30542.,  32630.,  34718., 36806., 38894., 40982.,
      70244.,  74484.,  78724.,  82964.,  35782., 37934., 40086., 42238.,
      72372.,  76740.,  81108.,  85476.,  36846., 39062., 41278., 43494.,
      74500.,  78996.,  83492.,  87988.,  37910., 40190., 42470., 44750.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   1012.,  1284.,
      1556.,  1828.,  782.,   950.,   1118.,  1286.,  1454.,  1622.,  1790.,
      1958.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,   630.,
      670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,  1734.,
      1838.,  1942.,  2046.,  4276.,  4548.,  4820.,  5092.,  2798.,  2966.,
      3134.,  3302.,  3470.,  3638.,  3806.,  3974.,  0.,     0.,     0.,
      0.,     1140.,  1412.,  1684.,  1956.,  2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,  7416.,  8088.,  4356.,  4756.,  5156.,  5556.,  10328.,
      11256., 12184., 13112., 6484.,  7012.,  7540.,  8068.,  8596.,  9124.,
      9652.,  10180., 0.,     0.,     0.,     0.,     2934.,  3166.,  3398.,
      3630.,  3862.,  4094.,  4326.,  4558.,  8532.,  9060.,  9588.,  10116.,
      4926.,  5222.,  5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,
      6350.,  6710.,  7070.,  7430.,  7790.,  8150.,  8510.,  0.,     0.,
      0.,     0.,     5718.,  5950.,  6182.,  6414.,  6646.,  6878.,  7110.,
      7342.,  14868., 15396., 15924., 16452., 8478.,  8774.,  9070.,  9366.,
      18532., 19188., 19844., 20500., 10310., 10670., 11030., 11390., 11750.,
      12110., 12470., 12830., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     270.,   694.,   1118.,  1542.,  1966.,  2390.,
      2814.,  3238.,  3972.,  4884.,  5796.,  6708.,  2262.,  2750.,  3238.,
      3726.,  4564.,  5604.,  6644.,  7684.,  2558.,  3110.,  3662.,  4214.,
      4766.,  5318.,  5870.,  6422.,  0.,     0.,     0.,     0.,     5358.,
      5782.,  6206.,  6630.,  7054.,  7478.,  7902.,  8326.,  14916., 15828.,
      16740., 17652., 8118.,  8606.,  9094.,  9582.,  17044., 18084., 19124.,
      20164., 9182.,  9734.,  10286., 10838., 11390., 11942., 12494., 13046.,
      0.,     0.,     0.,     0.,     10836., 11876., 12916., 13956., 14996.,
      16036., 17076., 18116., 31608., 33816., 36024., 38232., 17124., 18292.,
      19460., 20628., 35864., 38328., 40792., 43256., 19252., 20548., 21844.,
      23140., 24436., 25732., 27028., 28324., 0.,     0.,     0.,     0.,
      7782.,  8398.,  9014.,  9630.,  10246., 10862., 11478., 12094., 21300.,
      22596., 23892., 25188., 11310., 11990., 12670., 13350., 23428., 24852.,
      26276., 27700., 12374., 13118., 13862., 14606., 15350., 16094., 16838.,
      17582., 0.,     0.,     0.,     0.,     15174., 15790., 16406., 17022.,
      17638., 18254., 18870., 19486., 36852., 38148., 39444., 40740., 19470.,
      20150., 20830., 21510., 40516., 41940., 43364., 44788., 21302., 22046.,
      22790., 23534., 24278., 25022., 25766., 26510., 0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     510.,   1318.,  2126.,
      2934.,  3742.,  4550.,  5358.,  6166.,  7524.,  9204.,  10884., 12564.,
      4038.,  4910.,  5782.,  6654.,  8116.,  9924.,  11732., 13540., 4334.,
      5270.,  6206.,  7142.,  8078.,  9014.,  9950.,  10886., 0.,     0.,
      0.,     0.,     10206., 11014., 11822., 12630., 13438., 14246., 15054.,
      15862., 27684., 29364., 31044., 32724., 14502., 15374., 16246., 17118.,
      29812., 31620., 33428., 35236., 15566., 16502., 17438., 18374., 19310.,
      20246., 21182., 22118., 0.,     0.,     0.,     0.,     20532., 22340.,
      24148., 25956., 27764., 29572., 31380., 33188., 57144., 60888., 64632.,
      68376., 29892., 31828., 33764., 35700., 61400., 65400., 69400., 73400.,
      32020., 34084., 36148., 38212., 40276., 42340., 44404., 46468., 0.,
      0.,     0.,     0.,     12630., 13630., 14630., 15630., 16630., 17630.,
      18630., 19630., 34068., 36132., 38196., 40260., 17694., 18758., 19822.,
      20886., 36196., 38388., 40580., 42772., 18758., 19886., 21014., 22142.,
      23270., 24398., 25526., 26654., 0.,     0.,     0.,     0.,     24630.,
      25630., 26630., 27630., 28630., 29630., 30630., 31630., 58836., 60900.,
      62964., 65028., 30462., 31526., 32590., 33654., 62500., 64692., 66884.,
      69076., 32294., 33422., 34550., 35678., 36806., 37934., 39062., 40190.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2.,   5.,   4.,   9.,   6.,   5.,   14.,  10.,  24.,  15.,  16.,  40.,
      26.,  60.,  36.,  20.,  44.,  25.,  54.,  30.,  46.,  100., 56.,  120.,
      66.,  35.,  74.,  40.,  84.,  45.,  76.,  160., 86.,  180., 96.,  50.,
      104., 55.,  114., 60.,  26.,  53.,  28.,  57.,  30.,  65.,  134., 70.,
      144., 75.,  136., 280., 146., 300., 156., 80.,  164., 85.,  174., 90.,
      166., 340., 176., 360., 186., 95.,  194., 100., 204., 105., 196., 400.,
      206., 420., 216., 110., 224., 115., 234., 120., 50.,  101., 52.,  105.,
      54.,  125., 254., 130., 264., 135., 256., 520., 266., 540., 276., 140.,
      284., 145., 294., 150., 286., 580., 296., 600., 306., 155., 314., 160.,
      324., 165., 316., 640., 326., 660., 336., 170., 344., 175., 354., 180.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   6.,   4.,   5.,   14.,  10.,  12.,  10.,  14.,
      36.,  24.,  30.,  12.,  15.,  34.,  20.,  24.,  26.,  34.,  76.,  44.,
      54.,  20.,  25.,  54.,  30.,  36.,  35.,  40.,  87.,  48.,  54.,  0.,
      0.,   0.,   0.,   0.,   7.,   14.,  29.,  16.,  24.,  28.,  35.,  74.,
      40.,  48.,  58.,  74.,  156., 84.,  102., 36.,  45.,  94.,  50.,  60.,
      74.,  94.,  196., 104., 126., 44.,  55.,  114., 60.,  72.,  77.,  88.,
      183., 96.,  108., 0.,   0.,   0.,   0.,   0.,   13.,  26.,  53.,  28.,
      42.,  52.,  65.,  134., 70.,  84.,  106., 134., 276., 144., 174., 60.,
      75.,  154., 80.,  96.,  122., 154., 316., 164., 198., 68.,  85.,  174.,
      90.,  108., 119., 136., 279., 144., 162., 0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11.,   28.,   25.,   56.,   39.,   29.,   88.,   67.,   164.,  105.,
      100.,  260.,  176.,  412.,  252.,  143.,  316.,  181.,  392.,  219.,
      328.,  716.,  404.,  868.,  480.,  257.,  544.,  295.,  620.,  333.,
      556.,  1172., 632.,  1324., 708.,  371.,  772.,  409.,  848.,  447.,
      179.,  364.,  193.,  392.,  207.,  485.,  1000., 523.,  1076., 561.,
      1012., 2084., 1088., 2236., 1164., 599.,  1228., 637.,  1304., 675.,
      1240., 2540., 1316., 2692., 1392., 713.,  1456., 751.,  1532., 789.,
      1468., 2996., 1544., 3148., 1620., 827.,  1684., 865.,  1760., 903.,
      347.,  700.,  361.,  728.,  375.,  941.,  1912., 979.,  1988., 1017.,
      1924., 3908., 2000., 4060., 2076., 1055., 2140., 1093., 2216., 1131.,
      2152., 4364., 2228., 4516., 2304., 1169., 2368., 1207., 2444., 1245.,
      2380., 4820., 2456., 4972., 2532., 1283., 2596., 1321., 2672., 1359.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,   28.,   25.,   39.,   23.,  29.,  88.,   67.,  81.,
      58.,  86.,   232.,  162.,  206.,  83.,  105., 240.,  143., 173.,
      178., 238.,  536.,  314.,  390.,  143., 181., 392.,  219., 265.,
      257., 295.,  644.,  357.,  403.,  0.,   0.,   0.,    0.,   0.,
      41.,  95.,   196.,  109.,  171.,  203., 257., 544.,  295., 357.,
      418., 542.,  1144., 618.,  758.,  263., 333., 696.,  371., 449.,
      538., 694.,  1448., 770.,  942.,  323., 409., 848.,  447., 541.,
      581., 667.,  1388., 729.,  823.,  0.,   0.,   0.,    0.,   0.,
      77.,  179.,  364.,  193.,  303.,  383., 485., 1000., 523., 633.,
      778., 998.,  2056., 1074., 1310., 443., 561., 1152., 599., 725.,
      898., 1150., 2360., 1226., 1494., 503., 637., 1304., 675., 817.,
      905., 1039., 2132., 1101., 1243., 0.,   0.,   0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70.,    180.,   174.,   388.,   278.,   190.,   612.,   486.,   1204.,
      782.,   692.,   1848.,  1284.,  3032.,  1876.,  1078.,  2388.,  1374.,
      2980.,  1670.,  2468.,  5400.,  3060.,  6584.,  3652.,  1966.,  4164.,
      2262.,  4756.,  2558.,  4244.,  8952.,  4836.,  10136., 5428.,  2854.,
      5940.,  3150.,  6532.,  3446.,  1318.,  2676.,  1422.,  2884.,  1526.,
      3742.,  7716.,  4038.,  8308.,  4334.,  7796.,  16056., 8388.,  17240.,
      8980.,  4630.,  9492.,  4926.,  10084., 5222.,  9572.,  19608., 10164.,
      20792., 10756., 5518.,  11268., 5814.,  11860., 6110.,  11348., 23160.,
      11940., 24344., 12532., 6406.,  13044., 6702.,  13636., 6998.,  2566.,
      5172.,  2670.,  5380.,  2774.,  7294.,  14820., 7590.,  15412., 7886.,
      14900., 30264., 15492., 31448., 16084., 8182.,  16596., 8478.,  17188.,
      8774.,  16676., 33816., 17268., 35000., 17860., 9070.,  18372., 9366.,
      18964., 9662.,  18452., 37368., 19044., 38552., 19636., 9958.,  20148.,
      10254., 20740., 10550.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,   174.,  278.,   150.,  190.,  612.,   486.,  590.,
      380.,  588.,  1640.,  1180., 1516.,  614.,  782.,  1796.,  1078., 1310.,
      1308., 1772., 4008.,  2364., 2956.,  1078., 1374., 2980.,  1670., 2030.,
      1966., 2262., 4948.,  2750., 3110.,  0.,    0.,    0.,     0.,    0.,
      270.,  694.,  1428.,  798.,  1286.,  1542., 1966., 4164.,  2262., 2750.,
      3164., 4140., 8744.,  4732., 5836.,  2006., 2558., 5348.,  2854., 3470.,
      4092., 5324., 11112., 5916., 7276.,  2470., 3150., 6532.,  3446., 4190.,
      4510., 5190., 10804., 5678., 6422.,  0.,    0.,    0.,     0.,    0.,
      510.,  1318., 2676.,  1422., 2294.,  2934., 3742., 7716.,  4038., 4910.,
      5948., 7692., 15848., 8284., 10156., 3398., 4334., 8900.,  4630., 5630.,
      6876., 8876., 18216., 9468., 11596., 3862., 4926., 10084., 5222., 6350.,
      7054., 8118., 16660., 8606., 9734.,  0.,    0.,    0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3.,    4.,   7.,    10.,   6.,    8.,    13.,   18.,   9.,    12.,   9.,
      10.,   25.,  28.,   18.,   20.,   43.,   48.,   27.,   30.,   27.,   32.,
      68.,   80.,  45.,   52.,   104.,  120.,  63.,   72.,   36.,   40.,   79.,
      88.,   45.,  50.,   97.,   108.,  54.,   60.,   81.,   92.,   176.,  200.,
      99.,   112., 212.,  240.,  117.,  132.,  63.,   70.,   133.,  148.,  72.,
      80.,   151., 168.,  81.,   90.,   135.,  152.,  284.,  320.,  153.,  172.,
      320.,  360., 171.,  192.,  90.,   100.,  187.,  208.,  99.,   110.,  205.,
      228.,  108., 120.,  39.,   52.,   79.,   106.,  42.,   56.,   85.,   114.,
      45.,   60.,  117.,  130.,  241.,  268.,  126.,  140.,  259.,  288.,  135.,
      150.,  243., 272.,  500.,  560.,  261.,  292.,  536.,  600.,  279.,  312.,
      144.,  160., 295.,  328.,  153.,  170.,  313.,  348.,  162.,  180.,  297.,
      332.,  608., 680.,  315.,  352.,  644.,  720.,  333.,  372.,  171.,  190.,
      349.,  388., 180.,  200.,  367.,  408.,  189.,  210.,  351.,  392.,  716.,
      800.,  369., 412.,  752.,  840.,  387.,  432.,  198.,  220.,  403.,  448.,
      207.,  230., 421.,  468.,  216.,  240.,  75.,   100.,  151.,  202.,  78.,
      104.,  157., 210.,  81.,   108.,  225.,  250.,  457.,  508.,  234.,  260.,
      475.,  528., 243.,  270.,  459.,  512.,  932.,  1040., 477.,  532.,  968.,
      1080., 495., 552.,  252.,  280.,  511.,  568.,  261.,  290.,  529.,  588.,
      270.,  300., 513.,  572.,  1040., 1160., 531.,  592.,  1076., 1200., 549.,
      612.,  279., 310.,  565.,  628.,  288.,  320.,  583.,  648.,  297.,  330.,
      567.,  632., 1148., 1280., 585.,  652.,  1184., 1320., 603.,  672.,  306.,
      340.,  619., 688.,  315.,  350.,  637.,  708.,  324.,  360.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   10.,  12.,  7.,   8.,
      9.,   10.,  25.,  28.,  18.,  20.,  22.,  24.,  16.,  20.,  24.,  28.,
      62.,  72.,  42.,  48.,  54.,  60.,  21.,  24.,  27.,  30.,  61.,  68.,
      36.,  40.,  44.,  48.,  44.,  52.,  60.,  68.,  134., 152., 78.,  88.,
      98.,  108., 35.,  40.,  45.,  50.,  97.,  108., 54.,  60.,  66.,  72.,
      65.,  70.,  75.,  80.,  163., 174., 90.,  96.,  102., 108., 0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   7.,   14.,  21.,  28.,
      43.,  58.,  24.,  32.,  40.,  48.,  49.,  56.,  63.,  70.,  133., 148.,
      72.,  80.,  88.,  96.,  100., 116., 132., 148., 278., 312., 150., 168.,
      186., 204., 63.,  72.,  81.,  90.,  169., 188., 90.,  100., 110., 120.,
      128., 148., 168., 188., 350., 392., 186., 208., 230., 252., 77.,  88.,
      99.,  110., 205., 228., 108., 120., 132., 144., 143., 154., 165., 176.,
      343., 366., 180., 192., 204., 216., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   13.,  26.,  39.,  52.,  79.,  106., 42.,  56.,
      70.,  84.,  91.,  104., 117., 130., 241., 268., 126., 140., 154., 168.,
      184., 212., 240., 268., 494., 552., 258., 288., 318., 348., 105., 120.,
      135., 150., 277., 308., 144., 160., 176., 192., 212., 244., 276., 308.,
      566., 632., 294., 328., 362., 396., 119., 136., 153., 170., 313., 348.,
      162., 180., 198., 216., 221., 238., 255., 272., 523., 558., 270., 288.,
      306., 324., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,   61.,   83.,
      53.,   59.,   160.,  180.,  123.,  137.,  300.,  336.,   193.,  215.,
      172.,  208.,  452.,  540.,  312.,  364.,  732.,  852.,   452.,  520.,
      263.,  293.,  580.,  648.,  333.,  371.,  720.,  804.,   403.,  449.,
      592.,  676.,  1292., 1476., 732.,  832.,  1572., 1788.,  872.,  988.,
      473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272.,  613.,  683.,
      1012., 1144., 2132., 2412., 1152., 1300., 2412., 2724.,  1292., 1456.,
      683.,  761.,  1420., 1584., 753.,  839.,  1560., 1740.,  823.,  917.,
      281.,  383.,  568.,  780.,  303.,  413.,  612.,  840.,   325.,  443.,
      893.,  995.,  1840., 2052., 963.,  1073., 1980., 2208.,  1033., 1151.,
      1852., 2080., 3812., 4284., 1992., 2236., 4092., 4596.,  2132., 2392.,
      1103., 1229., 2260., 2520., 1173., 1307., 2400., 2676.,  1243., 1385.,
      2272., 2548., 4652., 5220., 2412., 2704., 4932., 5532.,  2552., 2860.,
      1313., 1463., 2680., 2988., 1383., 1541., 2820., 3144.,  1453., 1619.,
      2692., 3016., 5492., 6156., 2832., 3172., 5772., 6468.,  2972., 3328.,
      1523., 1697., 3100., 3456., 1593., 1775., 3240., 3612.,  1663., 1853.,
      545.,  743.,  1096., 1500., 567.,  773.,  1140., 1560.,  589.,  803.,
      1733., 1931., 3520., 3924., 1803., 2009., 3660., 4080.,  1873., 2087.,
      3532., 3952., 7172., 8028., 3672., 4108., 7452., 8340.,  3812., 4264.,
      1943., 2165., 3940., 4392., 2013., 2243., 4080., 4548.,  2083., 2321.,
      3952., 4420., 8012., 8964., 4092., 4576., 8292., 9276.,  4232., 4732.,
      2153., 2399., 4360., 4860., 2223., 2477., 4500., 5016.,  2293., 2555.,
      4372., 4888., 8852., 9900., 4512., 5044., 9132., 10212., 4652., 5200.,
      2363., 2633., 4780., 5328., 2433., 2711., 4920., 5484.,  2503., 2789.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   67.,   81.,
      41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,  151.,  165.,
      94.,   122.,  150.,  178.,  408.,  480.,  290.,  334.,  378.,  422.,
      149.,  171.,  193.,  215.,  440.,  492.,  263.,  293.,  323.,  353.,
      310.,  370.,  430.,  490.,  968.,  1104., 570.,  646.,  722.,  798.,
      257.,  295.,  333.,  371.,  720.,  804.,  403.,  449.,  495.,  541.,
      485.,  523.,  561.,  599.,  1224., 1308., 679.,  725.,  771.,  817.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      41.,   95.,   149.,  203.,  304.,  420.,  171.,  233.,  295.,  357.,
      365.,  419.,  473.,  527.,  1000., 1116., 543.,  605.,  667.,  729.,
      742.,  866.,  990.,  1114., 2088., 2352., 1130., 1270., 1410., 1550.,
      473.,  543.,  613.,  683.,  1280., 1428., 683.,  761.,  839.,  917.,
      958.,  1114., 1270., 1426., 2648., 2976., 1410., 1582., 1754., 1926.,
      581.,  667.,  753.,  839.,  1560., 1740., 823.,  917.,  1011., 1105.,
      1097., 1183., 1269., 1355., 2640., 2820., 1387., 1481., 1575., 1669.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      77.,   179.,  281.,  383.,  568.,  780.,  303.,  413.,  523.,  633.,
      689.,  791.,  893.,  995.,  1840., 2052., 963.,  1073., 1183., 1293.,
      1390., 1610., 1830., 2050., 3768., 4224., 1970., 2206., 2442., 2678.,
      797.,  915.,  1033., 1151., 2120., 2364., 1103., 1229., 1355., 1481.,
      1606., 1858., 2110., 2362., 4328., 4848., 2250., 2518., 2786., 3054.,
      905.,  1039., 1173., 1307., 2400., 2676., 1243., 1385., 1527., 1669.,
      1709., 1843., 1977., 2111., 4056., 4332., 2095., 2237., 2379., 2521.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      110.,   150.,   260.,   404.,   278.,   382.,   596.,   868.,   446.,
      614.,   350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,
      1454.,  1622.,  1204.,  1476.,  3256.,  3928.,  2308.,  2708.,  5464.,
      6392.,  3412.,  3940.,  2006.,  2238.,  4436.,  4964.,  2558.,  2854.,
      5540.,  6196.,  3110.,  3470.,  4516.,  5172.,  9880.,  11320., 5620.,
      6404.,  12088., 13784., 6724.,  7636.,  3662.,  4086.,  7748.,  8660.,
      4214.,  4702.,  8852.,  9892.,  4766.,  5318.,  7828.,  8868.,  16504.,
      18712., 8932.,  10100., 18712., 21176., 10036., 11332., 5318.,  5934.,
      11060., 12356., 5870.,  6550.,  12164., 13588., 6422.,  7166.,  2126.,
      2934.,  4292.,  5972.,  2294.,  3166.,  4628.,  6436.,  2462.,  3398.,
      6974.,  7782.,  14372., 16052., 7526.,  8398.,  15476., 17284., 8078.,
      9014.,  14452., 16260., 29752., 33496., 15556., 17492., 31960., 35960.,
      16660., 18724., 8630.,  9630.,  17684., 19748., 9182.,  10246., 18788.,
      20980., 9734.,  10862., 17764., 19956., 36376., 40888., 18868., 21188.,
      38584., 43352., 19972., 22420., 10286., 11478., 20996., 23444., 10838.,
      12094., 22100., 24676., 11390., 12710., 21076., 23652., 43000., 48280.,
      22180., 24884., 45208., 50744., 23284., 26116., 11942., 13326., 24308.,
      27140., 12494., 13942., 25412., 28372., 13046., 14558., 4142.,  5718.,
      8324.,  11540., 4310.,  5950.,  8660.,  12004., 4478.,  6182.,  13598.,
      15174., 27620., 30836., 14150., 15790., 28724., 32068., 14702., 16406.,
      27700., 31044., 56248., 63064., 28804., 32276., 58456., 65528., 29908.,
      33508., 15254., 17022., 30932., 34532., 15806., 17638., 32036., 35764.,
      16358., 18254., 31012., 34740., 62872., 70456., 32116., 35972., 65080.,
      72920., 33220., 37204., 16910., 18870., 34244., 38228., 17462., 19486.,
      35348., 39460., 18014., 20102., 34324., 38436., 69496., 77848., 35428.,
      39668., 71704., 80312., 36532., 40900., 18566., 20718., 37556., 41924.,
      19118., 21334., 38660., 43156., 19670., 21950.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   486.,
      590.,   270.,   310.,   350.,   390.,   1124.,  1268.,  902.,   1006.,
      1110.,  1214.,  620.,   828.,   1036.,  1244.,  2920.,  3464.,  2140.,
      2476.,  2812.,  3148.,  1118.,  1286.,  1454.,  1622.,  3332.,  3732.,
      2006.,  2238.,  2470.,  2702.,  2316.,  2780.,  3244.,  3708.,  7336.,
      8392.,  4348.,  4940.,  5532.,  6124.,  1966.,  2262.,  2558.,  2854.,
      5540.,  6196.,  3110.,  3470.,  3830.,  4190.,  3742.,  4038.,  4334.,
      4630.,  9476.,  10132., 5270.,  5630.,  5990.,  6350.,  0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     270.,
      694.,   1118.,  1542.,  2276.,  3188.,  1286.,  1774.,  2262.,  2750.,
      2814.,  3238.,  3662.,  4086.,  7748.,  8660.,  4214.,  4702.,  5190.,
      5678.,  5708.,  6684.,  7660.,  8636.,  16168., 18248., 8764.,  9868.,
      10972., 12076., 3662.,  4214.,  4766.,  5318.,  9956.,  11124., 5318.,
      5934.,  6550.,  7166.,  7404.,  8636.,  9868.,  11100., 20584., 23176.,
      10972., 12332., 13692., 15052., 4510.,  5190.,  5870.,  6550.,  12164.,
      13588., 6422.,  7166.,  7910.,  8654.,  8590.,  9270.,  9950.,  10630.,
      20708., 22132., 10886., 11630., 12374., 13118., 0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     510.,   1318.,
      2126.,  2934.,  4292.,  5972.,  2294.,  3166.,  4038.,  4910.,  5358.,
      6166.,  6974.,  7782.,  14372., 16052., 7526.,  8398.,  9270.,  10142.,
      10796., 12540., 14284., 16028., 29416., 33032., 15388., 17260., 19132.,
      21004., 6206.,  7142.,  8078.,  9014.,  16580., 18516., 8630.,  9630.,
      10630., 11630., 12492., 14492., 16492., 18492., 33832., 37960., 17596.,
      19724., 21852., 23980., 7054.,  8118.,  9182.,  10246., 18788., 20980.,
      9734.,  10862., 11990., 13118., 13438., 14502., 15566., 16630., 31940.,
      34132., 16502., 17630., 18758., 19886., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    6.,    7.,    8.,    11.,   14.,   17.,   20.,   10.,   12.,
      14.,   16.,   21.,   26.,   31.,   36.,   15.,   18.,   21.,   24.,
      17.,   18.,   19.,   20.,   47.,   50.,   53.,   56.,   34.,   36.,
      38.,   40.,   81.,   86.,   91.,   96.,   51.,   54.,   57.,   60.,
      49.,   54.,   59.,   64.,   124.,  136.,  148.,  160.,  83.,   90.,
      97.,   104.,  192.,  208.,  224.,  240.,  117.,  126.,  135.,  144.,
      68.,   72.,   76.,   80.,   149.,  158.,  167.,  176.,  85.,   90.,
      95.,   100.,  183.,  194.,  205.,  216.,  102.,  108.,  114.,  120.,
      151.,  162.,  173.,  184.,  328.,  352.,  376.,  400.,  185.,  198.,
      211.,  224.,  396.,  424.,  452.,  480.,  219.,  234.,  249.,  264.,
      119.,  126.,  133.,  140.,  251.,  266.,  281.,  296.,  136.,  144.,
      152.,  160.,  285.,  302.,  319.,  336.,  153.,  162.,  171.,  180.,
      253.,  270.,  287.,  304.,  532.,  568.,  604.,  640.,  287.,  306.,
      325.,  344.,  600.,  640.,  680.,  720.,  321.,  342.,  363.,  384.,
      170.,  180.,  190.,  200.,  353.,  374.,  395.,  416.,  187.,  198.,
      209.,  220.,  387.,  410.,  433.,  456.,  204.,  216.,  228.,  240.,
      65.,   78.,   91.,   104.,  131.,  158.,  185.,  212.,  70.,   84.,
      98.,   112.,  141.,  170.,  199.,  228.,  75.,   90.,   105.,  120.,
      221.,  234.,  247.,  260.,  455.,  482.,  509.,  536.,  238.,  252.,
      266.,  280.,  489.,  518.,  547.,  576.,  255.,  270.,  285.,  300.,
      457.,  486.,  515.,  544.,  940.,  1000., 1060., 1120., 491.,  522.,
      553.,  584.,  1008., 1072., 1136., 1200., 525.,  558.,  591.,  624.,
      272.,  288.,  304.,  320.,  557.,  590.,  623.,  656.,  289.,  306.,
      323.,  340.,  591.,  626.,  661.,  696.,  306.,  324.,  342.,  360.,
      559.,  594.,  629.,  664.,  1144., 1216., 1288., 1360., 593.,  630.,
      667.,  704.,  1212., 1288., 1364., 1440., 627.,  666.,  705.,  744.,
      323.,  342.,  361.,  380.,  659.,  698.,  737.,  776.,  340.,  360.,
      380.,  400.,  693.,  734.,  775.,  816.,  357.,  378.,  399.,  420.,
      661.,  702.,  743.,  784.,  1348., 1432., 1516., 1600., 695.,  738.,
      781.,  824.,  1416., 1504., 1592., 1680., 729.,  774.,  819.,  864.,
      374.,  396.,  418.,  440.,  761.,  806.,  851.,  896.,  391.,  414.,
      437.,  460.,  795.,  842.,  889.,  936.,  408.,  432.,  456.,  480.,
      125.,  150.,  175.,  200.,  251.,  302.,  353.,  404.,  130.,  156.,
      182.,  208.,  261.,  314.,  367.,  420.,  135.,  162.,  189.,  216.,
      425.,  450.,  475.,  500.,  863.,  914.,  965.,  1016., 442.,  468.,
      494.,  520.,  897.,  950.,  1003., 1056., 459.,  486.,  513.,  540.,
      865.,  918.,  971.,  1024., 1756., 1864., 1972., 2080., 899.,  954.,
      1009., 1064., 1824., 1936., 2048., 2160., 933.,  990.,  1047., 1104.,
      476.,  504.,  532.,  560.,  965.,  1022., 1079., 1136., 493.,  522.,
      551.,  580.,  999.,  1058., 1117., 1176., 510.,  540.,  570.,  600.,
      967.,  1026., 1085., 1144., 1960., 2080., 2200., 2320., 1001., 1062.,
      1123., 1184., 2028., 2152., 2276., 2400., 1035., 1098., 1161., 1224.,
      527.,  558.,  589.,  620.,  1067., 1130., 1193., 1256., 544.,  576.,
      608.,  640.,  1101., 1166., 1231., 1296., 561.,  594.,  627.,  660.,
      1069., 1134., 1199., 1264., 2164., 2296., 2428., 2560., 1103., 1170.,
      1237., 1304., 2232., 2368., 2504., 2640., 1137., 1206., 1275., 1344.,
      578.,  612.,  646.,  680.,  1169., 1238., 1307., 1376., 595.,  630.,
      665.,  700.,  1203., 1274., 1345., 1416., 612.,  648.,  684.,  720.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    5.,    6.,   7.,   8.,    11.,   14.,   17.,
      20.,   10.,   12.,   14.,   16.,   18.,  20.,  22.,   24.,   13.,   14.,
      15.,   16.,   17.,   18.,   19.,   20.,  47.,  50.,   53.,   56.,   34.,
      36.,   38.,   40.,   42.,   44.,   46.,  48.,  28.,   32.,   36.,   40.,
      44.,   48.,   52.,   56.,   114.,  124., 134., 144.,  78.,   84.,   90.,
      96.,   102.,  108.,  114.,  120.,  39.,  42.,  45.,   48.,   51.,   54.,
      57.,   60.,   115.,  122.,  129.,  136., 68.,  72.,   76.,   80.,   84.,
      88.,   92.,   96.,   80.,   88.,   96.,  104., 112.,  120.,  128.,  136.,
      250.,  268.,  286.,  304.,  146.,  156., 166., 176.,  186.,  196.,  206.,
      216.,  65.,   70.,   75.,   80.,   85.,  90.,  95.,   100.,  183.,  194.,
      205.,  216.,  102.,  108.,  114.,  120., 126., 132.,  138.,  144.,  125.,
      130.,  135.,  140.,  145.,  150.,  155., 160., 315.,  326.,  337.,  348.,
      174.,  180.,  186.,  192.,  198.,  204., 210., 216.,  0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,   7.,   14.,   21.,   28.,   35.,
      42.,   49.,   56.,   71.,   86.,   101., 116., 40.,   48.,   56.,   64.,
      72.,   80.,   88.,   96.,   91.,   98.,  105., 112.,  119.,  126.,  133.,
      140.,  251.,  266.,  281.,  296.,  136., 144., 152.,  160.,  168.,  176.,
      184.,  192.,  184.,  200.,  216.,  232., 248., 264.,  280.,  296.,  522.,
      556.,  590.,  624.,  282.,  300.,  318., 336., 354.,  372.,  390.,  408.,
      117.,  126.,  135.,  144.,  153.,  162., 171., 180.,  319.,  338.,  357.,
      376.,  170.,  180.,  190.,  200.,  210., 220., 230.,  240.,  236.,  256.,
      276.,  296.,  316.,  336.,  356.,  376., 658., 700.,  742.,  784.,  350.,
      372.,  394.,  416.,  438.,  460.,  482., 504., 143.,  154.,  165.,  176.,
      187.,  198.,  209.,  220.,  387.,  410., 433., 456.,  204.,  216.,  228.,
      240.,  252.,  264.,  276.,  288.,  275., 286., 297.,  308.,  319.,  330.,
      341.,  352.,  663.,  686.,  709.,  732., 348., 360.,  372.,  384.,  396.,
      408.,  420.,  432.,  0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    13.,   26.,   39.,   52.,   65.,  78.,  91.,   104.,  131.,  158.,
      185.,  212.,  70.,   84.,   98.,   112., 126., 140.,  154.,  168.,  169.,
      182.,  195.,  208.,  221.,  234.,  247., 260., 455.,  482.,  509.,  536.,
      238.,  252.,  266.,  280.,  294.,  308., 322., 336.,  340.,  368.,  396.,
      424.,  452.,  480.,  508.,  536.,  930., 988., 1046., 1104., 486.,  516.,
      546.,  576.,  606.,  636.,  666.,  696., 195., 210.,  225.,  240.,  255.,
      270.,  285.,  300.,  523.,  554.,  585., 616., 272.,  288.,  304.,  320.,
      336.,  352.,  368.,  384.,  392.,  424., 456., 488.,  520.,  552.,  584.,
      616.,  1066., 1132., 1198., 1264., 554., 588., 622.,  656.,  690.,  724.,
      758.,  792.,  221.,  238.,  255.,  272., 289., 306.,  323.,  340.,  591.,
      626.,  661.,  696.,  306.,  324.,  342., 360., 378.,  396.,  414.,  432.,
      425.,  442.,  459.,  476.,  493.,  510., 527., 544.,  1011., 1046., 1081.,
      1116., 522.,  540.,  558.,  576.,  594., 612., 630.,  648.,  0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,    35.,    41.,    47.,    64.,    84.,    104.,   124.,   67.,
      81.,    95.,    109.,   140.,   176.,   212.,   248.,   105.,   127.,
      149.,   171.,   101.,   107.,   113.,   119.,   304.,   324.,   344.,
      364.,   235.,   249.,   263.,   277.,   572.,   608.,   644.,   680.,
      369.,   391.,   413.,   435.,   316.,   352.,   388.,   424.,   836.,
      924.,   1012.,  1100.,  584.,   636.,   688.,   740.,   1372.,  1492.,
      1612.,  1732.,  852.,   920.,   988.,   1056.,  503.,   533.,   563.,
      593.,   1108.,  1176.,  1244.,  1312.,  637.,   675.,   713.,   751.,
      1376.,  1460.,  1544.,  1628.,  771.,   817.,   863.,   909.,   1120.,
      1204.,  1288.,  1372.,  2444.,  2628.,  2812.,  2996.,  1388.,  1488.,
      1588.,  1688.,  2980.,  3196.,  3412.,  3628.,  1656.,  1772.,  1888.,
      2004.,  905.,   959.,   1013.,  1067.,  1912.,  2028.,  2144.,  2260.,
      1039.,  1101.,  1163.,  1225.,  2180.,  2312.,  2444.,  2576.,  1173.,
      1243.,  1313.,  1383.,  1924.,  2056.,  2188.,  2320.,  4052.,  4332.,
      4612.,  4892.,  2192.,  2340.,  2488.,  2636.,  4588.,  4900.,  5212.,
      5524.,  2460.,  2624.,  2788.,  2952.,  1307.,  1385.,  1463.,  1541.,
      2716.,  2880.,  3044.,  3208.,  1441.,  1527.,  1613.,  1699.,  2984.,
      3164.,  3344.,  3524.,  1575.,  1669.,  1763.,  1857.,  485.,   587.,
      689.,   791.,   976.,   1188.,  1400.,  1612.,  523.,   633.,   743.,
      853.,   1052.,  1280.,  1508.,  1736.,  561.,   679.,   797.,   915.,
      1709.,  1811.,  1913.,  2015.,  3520.,  3732.,  3944.,  4156.,  1843.,
      1953.,  2063.,  2173.,  3788.,  4016.,  4244.,  4472.,  1977.,  2095.,
      2213.,  2331.,  3532.,  3760.,  3988.,  4216.,  7268.,  7740.,  8212.,
      8684.,  3800.,  4044.,  4288.,  4532.,  7804.,  8308.,  8812.,  9316.,
      4068.,  4328.,  4588.,  4848.,  2111.,  2237.,  2363.,  2489.,  4324.,
      4584.,  4844.,  5104.,  2245.,  2379.,  2513.,  2647.,  4592.,  4868.,
      5144.,  5420.,  2379.,  2521.,  2663.,  2805.,  4336.,  4612.,  4888.,
      5164.,  8876.,  9444.,  10012., 10580., 4604.,  4896.,  5188.,  5480.,
      9412.,  10012., 10612., 11212., 4872.,  5180.,  5488.,  5796.,  2513.,
      2663.,  2813.,  2963.,  5128.,  5436.,  5744.,  6052.,  2647.,  2805.,
      2963.,  3121.,  5396.,  5720.,  6044.,  6368.,  2781.,  2947.,  3113.,
      3279.,  5140.,  5464.,  5788.,  6112.,  10484., 11148., 11812., 12476.,
      5408.,  5748.,  6088.,  6428.,  11020., 11716., 12412., 13108., 5676.,
      6032.,  6388.,  6744.,  2915.,  3089.,  3263.,  3437.,  5932.,  6288.,
      6644.,  7000.,  3049.,  3231.,  3413.,  3595.,  6200.,  6572.,  6944.,
      7316.,  3183.,  3373.,  3563.,  3753.,  941.,   1139.,  1337.,  1535.,
      1888.,  2292.,  2696.,  3100.,  979.,   1185.,  1391.,  1597.,  1964.,
      2384.,  2804.,  3224.,  1017.,  1231.,  1445.,  1659.,  3317.,  3515.,
      3713.,  3911.,  6736.,  7140.,  7544.,  7948.,  3451.,  3657.,  3863.,
      4069.,  7004.,  7424.,  7844.,  8264.,  3585.,  3799.,  4013.,  4227.,
      6748.,  7168.,  7588.,  8008.,  13700., 14556., 15412., 16268., 7016.,
      7452.,  7888.,  8324.,  14236., 15124., 16012., 16900., 7284.,  7736.,
      8188.,  8640.,  3719.,  3941.,  4163.,  4385.,  7540.,  7992.,  8444.,
      8896.,  3853.,  4083.,  4313.,  4543.,  7808.,  8276.,  8744.,  9212.,
      3987.,  4225.,  4463.,  4701.,  7552.,  8020.,  8488.,  8956.,  15308.,
      16260., 17212., 18164., 7820.,  8304.,  8788.,  9272.,  15844., 16828.,
      17812., 18796., 8088.,  8588.,  9088.,  9588.,  4121.,  4367.,  4613.,
      4859.,  8344.,  8844.,  9344.,  9844.,  4255.,  4509.,  4763.,  5017.,
      8612.,  9128.,  9644.,  10160., 4389.,  4651.,  4913.,  5175.,  8356.,
      8872.,  9388.,  9904.,  16916., 17964., 19012., 20060., 8624.,  9156.,
      9688.,  10220., 17452., 18532., 19612., 20692., 8892.,  9440.,  9988.,
      10536., 4523.,  4793.,  5063.,  5333.,  9148.,  9696.,  10244., 10792.,
      4657.,  4935.,  5213.,  5491.,  9416.,  9980.,  10544., 11108., 4791.,
      5077.,  5363.,  5649.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  123.,  137.,  151.,  165.,
      77.,   83.,   89.,   95.,   101.,  107.,  113.,  119.,  304.,  324.,
      344.,  364.,  235.,  249.,  263.,  277.,  291.,  305.,  319.,  333.,
      166.,  194.,  222.,  250.,  278.,  306.,  334.,  362.,  760.,  832.,
      904.,  976.,  546.,  590.,  634.,  678.,  722.,  766.,  810.,  854.,
      281.,  303.,  325.,  347.,  369.,  391.,  413.,  435.,  840.,  892.,
      944.,  996.,  503.,  533.,  563.,  593.,  623.,  653.,  683.,  713.,
      574.,  634.,  694.,  754.,  814.,  874.,  934.,  994.,  1832., 1968.,
      2104., 2240., 1082., 1158., 1234., 1310., 1386., 1462., 1538., 1614.,
      485.,  523.,  561.,  599.,  637.,  675.,  713.,  751.,  1376., 1460.,
      1544., 1628., 771.,  817.,  863.,  909.,  955.,  1001., 1047., 1093.,
      941.,  979.,  1017., 1055., 1093., 1131., 1169., 1207., 2384., 2468.,
      2552., 2636., 1323., 1369., 1415., 1461., 1507., 1553., 1599., 1645.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      41.,   95.,   149.,  203.,  257.,  311.,  365.,  419.,  520.,  636.,
      752.,  868.,  295.,  357.,  419.,  481.,  543.,  605.,  667.,  729.,
      689.,  743.,  797.,  851.,  905.,  959.,  1013., 1067., 1912., 2028.,
      2144., 2260., 1039., 1101., 1163., 1225., 1287., 1349., 1411., 1473.,
      1390., 1514., 1638., 1762., 1886., 2010., 2134., 2258., 3976., 4240.,
      4504., 4768., 2154., 2294., 2434., 2574., 2714., 2854., 2994., 3134.,
      893.,  963.,  1033., 1103., 1173., 1243., 1313., 1383., 2448., 2596.,
      2744., 2892., 1307., 1385., 1463., 1541., 1619., 1697., 1775., 1853.,
      1798., 1954., 2110., 2266., 2422., 2578., 2734., 2890., 5048., 5376.,
      5704., 6032., 2690., 2862., 3034., 3206., 3378., 3550., 3722., 3894.,
      1097., 1183., 1269., 1355., 1441., 1527., 1613., 1699., 2984., 3164.,
      3344., 3524., 1575., 1669., 1763., 1857., 1951., 2045., 2139., 2233.,
      2129., 2215., 2301., 2387., 2473., 2559., 2645., 2731., 5144., 5324.,
      5504., 5684., 2703., 2797., 2891., 2985., 3079., 3173., 3267., 3361.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      77.,   179.,  281.,  383.,  485.,  587.,  689.,  791.,  976.,  1188.,
      1400., 1612., 523.,  633.,  743.,  853.,  963.,  1073., 1183., 1293.,
      1301., 1403., 1505., 1607., 1709., 1811., 1913., 2015., 3520., 3732.,
      3944., 4156., 1843., 1953., 2063., 2173., 2283., 2393., 2503., 2613.,
      2614., 2834., 3054., 3274., 3494., 3714., 3934., 4154., 7192., 7648.,
      8104., 8560., 3762., 3998., 4234., 4470., 4706., 4942., 5178., 5414.,
      1505., 1623., 1741., 1859., 1977., 2095., 2213., 2331., 4056., 4300.,
      4544., 4788., 2111., 2237., 2363., 2489., 2615., 2741., 2867., 2993.,
      3022., 3274., 3526., 3778., 4030., 4282., 4534., 4786., 8264., 8784.,
      9304., 9824., 4298., 4566., 4834., 5102., 5370., 5638., 5906., 6174.,
      1709., 1843., 1977., 2111., 2245., 2379., 2513., 2647., 4592., 4868.,
      5144., 5420., 2379., 2521., 2663., 2805., 2947., 3089., 3231., 3373.,
      3317., 3451., 3585., 3719., 3853., 3987., 4121., 4255., 7904., 8180.,
      8456., 8732., 4083., 4225., 4367., 4509., 4651., 4793., 4935., 5077.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,   230.,   270.,   310.,   420.,    564.,    708.,    852.,
      486.,   590.,   694.,   798.,   1012.,   1284.,   1556.,   1828.,
      782.,   950.,   1118.,  1286.,  670.,    710.,    750.,    790.,
      2148.,  2292.,  2436.,  2580.,  1734.,   1838.,   1942.,   2046.,
      4276.,  4548.,  4820.,  5092.,  2798.,   2966.,   3134.,   3302.,
      2228.,  2500.,  2772.,  3044.,  6072.,   6744.,   7416.,   8088.,
      4356.,  4756.,  5156.,  5556.,  10328.,  11256.,  12184.,  13112.,
      6484.,  7012.,  7540.,  8068.,  3862.,   4094.,   4326.,   4558.,
      8532.,  9060.,  9588.,  10116., 4926.,   5222.,   5518.,   5814.,
      10660., 11316., 11972., 12628., 5990.,   6350.,   6710.,   7070.,
      8612.,  9268.,  9924.,  10580., 18840.,  20280.,  21720.,  23160.,
      10740., 11524., 12308., 13092., 23096.,  24792.,  26488.,  28184.,
      12868., 13780., 14692., 15604., 7054.,   7478.,   7902.,   8326.,
      14916., 15828., 16740., 17652., 8118.,   8606.,   9094.,   9582.,
      17044., 18084., 19124., 20164., 9182.,   9734.,   10286.,  10838.,
      14996., 16036., 17076., 18116., 31608.,  33816.,  36024.,  38232.,
      17124., 18292., 19460., 20628., 35864.,  38328.,  40792.,  43256.,
      19252., 20548., 21844., 23140., 10246.,  10862.,  11478.,  12094.,
      21300., 22596., 23892., 25188., 11310.,  11990.,  12670.,  13350.,
      23428., 24852., 26276., 27700., 12374.,  13118.,  13862.,  14606.,
      3742.,  4550.,  5358.,  6166.,  7524.,   9204.,   10884.,  12564.,
      4038.,  4910.,  5782.,  6654.,  8116.,   9924.,   11732.,  13540.,
      4334.,  5270.,  6206.,  7142.,  13438.,  14246.,  15054.,  15862.,
      27684., 29364., 31044., 32724., 14502.,  15374.,  16246.,  17118.,
      29812., 31620., 33428., 35236., 15566.,  16502.,  17438.,  18374.,
      27764., 29572., 31380., 33188., 57144.,  60888.,  64632.,  68376.,
      29892., 31828., 33764., 35700., 61400.,  65400.,  69400.,  73400.,
      32020., 34084., 36148., 38212., 16630.,  17630.,  18630.,  19630.,
      34068., 36132., 38196., 40260., 17694.,  18758.,  19822.,  20886.,
      36196., 38388., 40580., 42772., 18758.,  19886.,  21014.,  22142.,
      34148., 36340., 38532., 40724., 69912.,  74424.,  78936.,  83448.,
      36276., 38596., 40916., 43236., 74168.,  78936.,  83704.,  88472.,
      38404., 40852., 43300., 45748., 19822.,  21014.,  22206.,  23398.,
      40452., 42900., 45348., 47796., 20886.,  22142.,  23398.,  24654.,
      42580., 45156., 47732., 50308., 21950.,  23270.,  24590.,  25910.,
      40532., 43108., 45684., 48260., 82680.,  87960.,  93240.,  98520.,
      42660., 45364., 48068., 50772., 86936.,  92472.,  98008.,  103544.,
      44788., 47620., 50452., 53284., 23014.,  24398.,  25782.,  27166.,
      46836., 49668., 52500., 55332., 24078.,  25526.,  26974.,  28422.,
      48964., 51924., 54884., 57844., 25142.,  26654.,  28166.,  29678.,
      7294.,  8870.,  10446., 12022., 14628.,  17844.,  21060.,  24276.,
      7590.,  9230.,  10870., 12510., 15220.,  18564.,  21908.,  25252.,
      7886.,  9590.,  11294., 12998., 26206.,  27782.,  29358.,  30934.,
      53220., 56436., 59652., 62868., 27270.,  28910.,  30550.,  32190.,
      55348., 58692., 62036., 65380., 28334.,  30038.,  31742.,  33446.,
      53300., 56644., 59988., 63332., 108216., 115032., 121848., 128664.,
      55428., 58900., 62372., 65844., 112472., 119544., 126616., 133688.,
      57556., 61156., 64756., 68356., 29398.,  31166.,  32934.,  34702.,
      59604., 63204., 66804., 70404., 30462.,  32294.,  34126.,  35958.,
      61732., 65460., 69188., 72916., 31526.,  33422.,  35318.,  37214.,
      59684., 63412., 67140., 70868., 120984., 128568., 136152., 143736.,
      61812., 65668., 69524., 73380., 125240., 133080., 140920., 148760.,
      63940., 67924., 71908., 75892., 32590.,  34550.,  36510.,  38470.,
      65988., 69972., 73956., 77940., 33654.,  35678.,  37702.,  39726.,
      68116., 72228., 76340., 80452., 34718.,  36806.,  38894.,  40982.,
      66068., 70180., 74292., 78404., 133752., 142104., 150456., 158808.,
      68196., 72436., 76676., 80916., 138008., 146616., 155224., 163832.,
      70324., 74692., 79060., 83428., 35782.,  37934.,  40086.,  42238.,
      72372., 76740., 81108., 85476., 36846.,  39062.,  41278.,  43494.,
      74500., 78996., 83492., 87988., 37910.,  40190.,  42470.,  44750.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   902.,   1006.,
      1110.,  1214.,  510.,   550.,   590.,   630.,   670.,   710.,   750.,
      790.,   2148.,  2292.,  2436.,  2580.,  1734.,  1838.,  1942.,  2046.,
      2150.,  2254.,  2358.,  2462.,  1100.,  1308.,  1516.,  1724.,  1932.,
      2140.,  2348.,  2556.,  5480.,  6024.,  6568.,  7112.,  4060.,  4396.,
      4732.,  5068.,  5404.,  5740.,  6076.,  6412.,  2126.,  2294.,  2462.,
      2630.,  2798.,  2966.,  3134.,  3302.,  6404.,  6804.,  7204.,  7604.,
      3862.,  4094.,  4326.,  4558.,  4790.,  5022.,  5254.,  5486.,  4332.,
      4796.,  5260.,  5724.,  6188.,  6652.,  7116.,  7580.,  13992., 15048.,
      16104., 17160., 8316.,  8908.,  9500.,  10092., 10684., 11276., 11868.,
      12460., 3742.,  4038.,  4334.,  4630.,  4926.,  5222.,  5518.,  5814.,
      10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,  7070.,  7430.,
      7790.,  8150.,  8510.,  7294.,  7590.,  7886.,  8182.,  8478.,  8774.,
      9070.,  9366.,  18532., 19188., 19844., 20500., 10310., 10670., 11030.,
      11390., 11750., 12110., 12470., 12830., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     270.,   694.,
      1118.,  1542.,  1966.,  2390.,  2814.,  3238.,  3972.,  4884.,  5796.,
      6708.,  2262.,  2750.,  3238.,  3726.,  4214.,  4702.,  5190.,  5678.,
      5358.,  5782.,  6206.,  6630.,  7054.,  7478.,  7902.,  8326.,  14916.,
      15828., 16740., 17652., 8118.,  8606.,  9094.,  9582.,  10070., 10558.,
      11046., 11534., 10796., 11772., 12748., 13724., 14700., 15676., 16652.,
      17628., 31016., 33096., 35176., 37256., 16828., 17932., 19036., 20140.,
      21244., 22348., 23452., 24556., 6974.,  7526.,  8078.,  8630.,  9182.,
      9734.,  10286., 10838., 19172., 20340., 21508., 22676., 10246., 10862.,
      11478., 12094., 12710., 13326., 13942., 14558., 14028., 15260., 16492.,
      17724., 18956., 20188., 21420., 22652., 39528., 42120., 44712., 47304.,
      21084., 22444., 23804., 25164., 26524., 27884., 29244., 30604., 8590.,
      9270.,  9950.,  10630., 11310., 11990., 12670., 13350., 23428., 24852.,
      26276., 27700., 12374., 13118., 13862., 14606., 15350., 16094., 16838.,
      17582., 16750., 17430., 18110., 18790., 19470., 20150., 20830., 21510.,
      40516., 41940., 43364., 44788., 21302., 22046., 22790., 23534., 24278.,
      25022., 25766., 26510., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     510.,   1318.,  2126.,  2934.,
      3742.,  4550.,  5358.,  6166.,  7524.,  9204.,  10884., 12564., 4038.,
      4910.,  5782.,  6654.,  7526.,  8398.,  9270.,  10142., 10206., 11014.,
      11822., 12630., 13438., 14246., 15054., 15862., 27684., 29364., 31044.,
      32724., 14502., 15374., 16246., 17118., 17990., 18862., 19734., 20606.,
      20492., 22236., 23980., 25724., 27468., 29212., 30956., 32700., 56552.,
      60168., 63784., 67400., 29596., 31468., 33340., 35212., 37084., 38956.,
      40828., 42700., 11822., 12758., 13694., 14630., 15566., 16502., 17438.,
      18374., 31940., 33876., 35812., 37748., 16630., 17630., 18630., 19630.,
      20630., 21630., 22630., 23630., 23724., 25724., 27724., 29724., 31724.,
      33724., 35724., 37724., 65064., 69192., 73320., 77448., 33852., 35980.,
      38108., 40236., 42364., 44492., 46620., 48748., 13438., 14502., 15566.,
      16630., 17694., 18758., 19822., 20886., 36196., 38388., 40580., 42772.,
      18758., 19886., 21014., 22142., 23270., 24398., 25526., 26654., 26206.,
      27270., 28334., 29398., 30462., 31526., 32590., 33654., 62500., 64692.,
      66884., 69076., 32294., 33422., 34550., 35678., 36806., 37934., 39062.,
      40190., 0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   4.,   5.,   14.,  10.,  24.,  15.,
      11.,  16.,  40.,  26.,  60.,  36.,  16.,  20.,  44.,  25.,  54.,  30.,
      35.,  46.,  100., 56.,  120., 66.,  28.,  35.,  74.,  40.,  84.,  45.,
      59.,  76.,  160., 86.,  180., 96.,  40.,  50.,  104., 55.,  114., 60.,
      13.,  26.,  53.,  28.,  57.,  30.,  52.,  65.,  134., 70.,  144., 75.,
      107., 136., 280., 146., 300., 156., 64.,  80.,  164., 85.,  174., 90.,
      131., 166., 340., 176., 360., 186., 76.,  95.,  194., 100., 204., 105.,
      155., 196., 400., 206., 420., 216., 88.,  110., 224., 115., 234., 120.,
      25.,  50.,  101., 52.,  105., 54.,  100., 125., 254., 130., 264., 135.,
      203., 256., 520., 266., 540., 276., 112., 140., 284., 145., 294., 150.,
      227., 286., 580., 296., 600., 306., 124., 155., 314., 160., 324., 165.,
      251., 316., 640., 326., 660., 336., 136., 170., 344., 175., 354., 180.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   6.,   0., 4.,  5.,  14.,  10., 12.,  0.,
      10.,  14.,  36.,  24.,  30.,  0., 12., 15., 34.,  20., 24.,  0.,
      26.,  34.,  76.,  44.,  54.,  0., 20., 25., 54.,  30., 36.,  0.,
      35.,  40.,  87.,  48.,  54.,  0., 0.,  0.,  0.,   0.,  0.,   0.,
      7.,   14.,  29.,  16.,  24.,  0., 28., 35., 74.,  40., 48.,  0.,
      58.,  74.,  156., 84.,  102., 0., 36., 45., 94.,  50., 60.,  0.,
      74.,  94.,  196., 104., 126., 0., 44., 55., 114., 60., 72.,  0.,
      77.,  88.,  183., 96.,  108., 0., 0.,  0.,  0.,   0.,  0.,   0.,
      13.,  26.,  53.,  28.,  42.,  0., 52., 65., 134., 70., 84.,  0.,
      106., 134., 276., 144., 174., 0., 60., 75., 154., 80., 96.,  0.,
      122., 154., 316., 164., 198., 0., 68., 85., 174., 90., 108., 0.,
      119., 136., 279., 144., 162., 0., 0.,  0.,  0.,   0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   23.,   29.,   88.,   67.,
      164.,  105.,  64.,   100.,  260.,  176.,  412.,  252.,  113.,  143.,
      316.,  181.,  392.,  219.,  244.,  328.,  716.,  404.,  868.,  480.,
      203.,  257.,  544.,  295.,  620.,  333.,  424.,  556.,  1172., 632.,
      1324., 708.,  293.,  371.,  772.,  409.,  848.,  447.,  77.,   179.,
      364.,  193.,  392.,  207.,  383.,  485.,  1000., 523.,  1076., 561.,
      784.,  1012., 2084., 1088., 2236., 1164., 473.,  599.,  1228., 637.,
      1304., 675.,  964.,  1240., 2540., 1316., 2692., 1392., 563.,  713.,
      1456., 751.,  1532., 789.,  1144., 1468., 2996., 1544., 3148., 1620.,
      653.,  827.,  1684., 865.,  1760., 903.,  149.,  347.,  700.,  361.,
      728.,  375.,  743.,  941.,  1912., 979.,  1988., 1017., 1504., 1924.,
      3908., 2000., 4060., 2076., 833.,  1055., 2140., 1093., 2216., 1131.,
      1684., 2152., 4364., 2228., 4516., 2304., 923.,  1169., 2368., 1207.,
      2444., 1245., 1864., 2380., 4820., 2456., 4972., 2532., 1013., 1283.,
      2596., 1321., 2672., 1359.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,   28.,   25.,   39.,   0., 23.,  29.,  88.,   67.,  81.,  0.,
      58.,  86.,   232.,  162.,  206.,  0., 83.,  105., 240.,  143., 173., 0.,
      178., 238.,  536.,  314.,  390.,  0., 143., 181., 392.,  219., 265., 0.,
      257., 295.,  644.,  357.,  403.,  0., 0.,   0.,   0.,    0.,   0.,   0.,
      41.,  95.,   196.,  109.,  171.,  0., 203., 257., 544.,  295., 357., 0.,
      418., 542.,  1144., 618.,  758.,  0., 263., 333., 696.,  371., 449., 0.,
      538., 694.,  1448., 770.,  942.,  0., 323., 409., 848.,  447., 541., 0.,
      581., 667.,  1388., 729.,  823.,  0., 0.,   0.,   0.,    0.,   0.,   0.,
      77.,  179.,  364.,  193.,  303.,  0., 383., 485., 1000., 523., 633., 0.,
      778., 998.,  2056., 1074., 1310., 0., 443., 561., 1152., 599., 725., 0.,
      898., 1150., 2360., 1226., 1494., 0., 503., 637., 1304., 675., 817., 0.,
      905., 1039., 2132., 1101., 1243., 0., 0.,   0.,   0.,    0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,   388.,   278.,   150.,   190.,   612.,
      486.,   1204.,  782.,   420.,   692.,   1848.,  1284.,  3032.,  1876.,
      846.,   1078.,  2388.,  1374.,  2980.,  1670.,  1812.,  2468.,  5400.,
      3060.,  6584.,  3652.,  1542.,  1966.,  4164.,  2262.,  4756.,  2558.,
      3204.,  4244.,  8952.,  4836.,  10136., 5428.,  2238.,  2854.,  5940.,
      3150.,  6532.,  3446.,  510.,   1318.,  2676.,  1422.,  2884.,  1526.,
      2934.,  3742.,  7716.,  4038.,  8308.,  4334.,  5988.,  7796.,  16056.,
      8388.,  17240., 8980.,  3630.,  4630.,  9492.,  4926.,  10084., 5222.,
      7380.,  9572.,  19608., 10164., 20792., 10756., 4326.,  5518.,  11268.,
      5814.,  11860., 6110.,  8772.,  11348., 23160., 11940., 24344., 12532.,
      5022.,  6406.,  13044., 6702.,  13636., 6998.,  990.,   2566.,  5172.,
      2670.,  5380.,  2774.,  5718.,  7294.,  14820., 7590.,  15412., 7886.,
      11556., 14900., 30264., 15492., 31448., 16084., 6414.,  8182.,  16596.,
      8478.,  17188., 8774.,  12948., 16676., 33816., 17268., 35000., 17860.,
      7110.,  9070.,  18372., 9366.,  18964., 9662.,  14340., 18452., 37368.,
      19044., 38552., 19636., 7806.,  9958.,  20148., 10254., 20740., 10550.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,   174.,  278.,   0.,    150.,   190.,  612.,   486.,
      590.,   0.,    380.,   588.,  1640.,  1180., 1516.,  0.,    614.,   782.,
      1796.,  1078., 1310.,  0.,    1308.,  1772., 4008.,  2364., 2956.,  0.,
      1078.,  1374., 2980.,  1670., 2030.,  0.,    1966.,  2262., 4948.,  2750.,
      3110.,  0.,    0.,     0.,    0.,     0.,    0.,     0.,    270.,   694.,
      1428.,  798.,  1286.,  0.,    1542.,  1966., 4164.,  2262., 2750.,  0.,
      3164.,  4140., 8744.,  4732., 5836.,  0.,    2006.,  2558., 5348.,  2854.,
      3470.,  0.,    4092.,  5324., 11112., 5916., 7276.,  0.,    2470.,  3150.,
      6532.,  3446., 4190.,  0.,    4510.,  5190., 10804., 5678., 6422.,  0.,
      0.,     0.,    0.,     0.,    0.,     0.,    510.,   1318., 2676.,  1422.,
      2294.,  0.,    2934.,  3742., 7716.,  4038., 4910.,  0.,    5948.,  7692.,
      15848., 8284., 10156., 0.,    3398.,  4334., 8900.,  4630., 5630.,  0.,
      6876.,  8876., 18216., 9468., 11596., 0.,    3862.,  4926., 10084., 5222.,
      6350.,  0.,    7054.,  8118., 16660., 8606., 9734.,  0.,    0.,     0.,
      0.,     0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,    3.,    4.,    7.,    10.,   6.,    8.,    13.,   18.,   9.,
      12.,  7.,    8.,    9.,    10.,   25.,   28.,   18.,   20.,   43.,   48.,
      27.,  30.,   17.,   22.,   27.,   32.,   68.,   80.,   45.,   52.,   104.,
      120., 63.,   72.,   28.,   32.,   36.,   40.,   79.,   88.,   45.,   50.,
      97.,  108.,  54.,   60.,   59.,   70.,   81.,   92.,   176.,  200.,  99.,
      112., 212.,  240.,  117.,  132.,  49.,   56.,   63.,   70.,   133.,  148.,
      72.,  80.,   151.,  168.,  81.,   90.,   101.,  118.,  135.,  152.,  284.,
      320., 153.,  172.,  320.,  360.,  171.,  192.,  70.,   80.,   90.,   100.,
      187., 208.,  99.,   110.,  205.,  228.,  108.,  120.,  13.,   26.,   39.,
      52.,  79.,   106.,  42.,   56.,   85.,   114.,  45.,   60.,   91.,   104.,
      117., 130.,  241.,  268.,  126.,  140.,  259.,  288.,  135.,  150.,  185.,
      214., 243.,  272.,  500.,  560.,  261.,  292.,  536.,  600.,  279.,  312.,
      112., 128.,  144.,  160.,  295.,  328.,  153.,  170.,  313.,  348.,  162.,
      180., 227.,  262.,  297.,  332.,  608.,  680.,  315.,  352.,  644.,  720.,
      333., 372.,  133.,  152.,  171.,  190.,  349.,  388.,  180.,  200.,  367.,
      408., 189.,  210.,  269.,  310.,  351.,  392.,  716.,  800.,  369.,  412.,
      752., 840.,  387.,  432.,  154.,  176.,  198.,  220.,  403.,  448.,  207.,
      230., 421.,  468.,  216.,  240.,  25.,   50.,   75.,   100.,  151.,  202.,
      78.,  104.,  157.,  210.,  81.,   108.,  175.,  200.,  225.,  250.,  457.,
      508., 234.,  260.,  475.,  528.,  243.,  270.,  353.,  406.,  459.,  512.,
      932., 1040., 477.,  532.,  968.,  1080., 495.,  552.,  196.,  224.,  252.,
      280., 511.,  568.,  261.,  290.,  529.,  588.,  270.,  300.,  395.,  454.,
      513., 572.,  1040., 1160., 531.,  592.,  1076., 1200., 549.,  612.,  217.,
      248., 279.,  310.,  565.,  628.,  288.,  320.,  583.,  648.,  297.,  330.,
      437., 502.,  567.,  632.,  1148., 1280., 585.,  652.,  1184., 1320., 603.,
      672., 238.,  272.,  306.,  340.,  619.,  688.,  315.,  350.,  637.,  708.,
      324., 360.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   10.,  12.,  0., 0.,
      7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,  22.,  24.,  0., 0.,
      16.,  20.,  24.,  28.,  62.,  72.,  42.,  48.,  54.,  60.,  0., 0.,
      21.,  24.,  27.,  30.,  61.,  68.,  36.,  40.,  44.,  48.,  0., 0.,
      44.,  52.,  60.,  68.,  134., 152., 78.,  88.,  98.,  108., 0., 0.,
      35.,  40.,  45.,  50.,  97.,  108., 54.,  60.,  66.,  72.,  0., 0.,
      65.,  70.,  75.,  80.,  163., 174., 90.,  96.,  102., 108., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,
      7.,   14.,  21.,  28.,  43.,  58.,  24.,  32.,  40.,  48.,  0., 0.,
      49.,  56.,  63.,  70.,  133., 148., 72.,  80.,  88.,  96.,  0., 0.,
      100., 116., 132., 148., 278., 312., 150., 168., 186., 204., 0., 0.,
      63.,  72.,  81.,  90.,  169., 188., 90.,  100., 110., 120., 0., 0.,
      128., 148., 168., 188., 350., 392., 186., 208., 230., 252., 0., 0.,
      77.,  88.,  99.,  110., 205., 228., 108., 120., 132., 144., 0., 0.,
      143., 154., 165., 176., 343., 366., 180., 192., 204., 216., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,
      13.,  26.,  39.,  52.,  79.,  106., 42.,  56.,  70.,  84.,  0., 0.,
      91.,  104., 117., 130., 241., 268., 126., 140., 154., 168., 0., 0.,
      184., 212., 240., 268., 494., 552., 258., 288., 318., 348., 0., 0.,
      105., 120., 135., 150., 277., 308., 144., 160., 176., 192., 0., 0.,
      212., 244., 276., 308., 566., 632., 294., 328., 362., 396., 0., 0.,
      119., 136., 153., 170., 313., 348., 162., 180., 198., 216., 0., 0.,
      221., 238., 255., 272., 523., 558., 270., 288., 306., 324., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,    40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   41.,   47.,    53.,   59.,   160.,  180.,  123.,  137.,
      300.,  336.,  193.,  215.,   100.,  136.,  172.,  208.,  452.,  540.,
      312.,  364.,  732.,  852.,   452.,  520.,  203.,  233.,  263.,  293.,
      580.,  648.,  333.,  371.,   720.,  804.,  403.,  449.,  424.,  508.,
      592.,  676.,  1292., 1476.,  732.,  832.,  1572., 1788., 872.,  988.,
      365.,  419.,  473.,  527.,   1000., 1116., 543.,  605.,  1140., 1272.,
      613.,  683.,  748.,  880.,   1012., 1144., 2132., 2412., 1152., 1300.,
      2412., 2724., 1292., 1456.,  527.,  605.,  683.,  761.,  1420., 1584.,
      753.,  839.,  1560., 1740.,  823.,  917.,  77.,   179.,  281.,  383.,
      568.,  780.,  303.,  413.,   612.,  840.,  325.,  443.,  689.,  791.,
      893.,  995.,  1840., 2052.,  963.,  1073., 1980., 2208., 1033., 1151.,
      1396., 1624., 1852., 2080.,  3812., 4284., 1992., 2236., 4092., 4596.,
      2132., 2392., 851.,  977.,   1103., 1229., 2260., 2520., 1173., 1307.,
      2400., 2676., 1243., 1385.,  1720., 1996., 2272., 2548., 4652., 5220.,
      2412., 2704., 4932., 5532.,  2552., 2860., 1013., 1163., 1313., 1463.,
      2680., 2988., 1383., 1541.,  2820., 3144., 1453., 1619., 2044., 2368.,
      2692., 3016., 5492., 6156.,  2832., 3172., 5772., 6468., 2972., 3328.,
      1175., 1349., 1523., 1697.,  3100., 3456., 1593., 1775., 3240., 3612.,
      1663., 1853., 149.,  347.,   545.,  743.,  1096., 1500., 567.,  773.,
      1140., 1560., 589.,  803.,   1337., 1535., 1733., 1931., 3520., 3924.,
      1803., 2009., 3660., 4080.,  1873., 2087., 2692., 3112., 3532., 3952.,
      7172., 8028., 3672., 4108.,  7452., 8340., 3812., 4264., 1499., 1721.,
      1943., 2165., 3940., 4392.,  2013., 2243., 4080., 4548., 2083., 2321.,
      3016., 3484., 3952., 4420.,  8012., 8964., 4092., 4576., 8292., 9276.,
      4232., 4732., 1661., 1907.,  2153., 2399., 4360., 4860., 2223., 2477.,
      4500., 5016., 2293., 2555.,  3340., 3856., 4372., 4888., 8852., 9900.,
      4512., 5044., 9132., 10212., 4652., 5200., 1823., 2093., 2363., 2633.,
      4780., 5328., 2433., 2711.,  4920., 5484., 2503., 2789.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   67.,   81.,
      0.,    0.,    41.,   47.,   53.,   59.,   160.,  180.,  123.,  137.,
      151.,  165.,  0.,    0.,    94.,   122.,  150.,  178.,  408.,  480.,
      290.,  334.,  378.,  422.,  0.,    0.,    149.,  171.,  193.,  215.,
      440.,  492.,  263.,  293.,  323.,  353.,  0.,    0.,    310.,  370.,
      430.,  490.,  968.,  1104., 570.,  646.,  722.,  798.,  0.,    0.,
      257.,  295.,  333.,  371.,  720.,  804.,  403.,  449.,  495.,  541.,
      0.,    0.,    485.,  523.,  561.,  599.,  1224., 1308., 679.,  725.,
      771.,  817.,  0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    41.,   95.,   149.,  203.,
      304.,  420.,  171.,  233.,  295.,  357.,  0.,    0.,    365.,  419.,
      473.,  527.,  1000., 1116., 543.,  605.,  667.,  729.,  0.,    0.,
      742.,  866.,  990.,  1114., 2088., 2352., 1130., 1270., 1410., 1550.,
      0.,    0.,    473.,  543.,  613.,  683.,  1280., 1428., 683.,  761.,
      839.,  917.,  0.,    0.,    958.,  1114., 1270., 1426., 2648., 2976.,
      1410., 1582., 1754., 1926., 0.,    0.,    581.,  667.,  753.,  839.,
      1560., 1740., 823.,  917.,  1011., 1105., 0.,    0.,    1097., 1183.,
      1269., 1355., 2640., 2820., 1387., 1481., 1575., 1669., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    77.,   179.,  281.,  383.,  568.,  780.,  303.,  413.,
      523.,  633.,  0.,    0.,    689.,  791.,  893.,  995.,  1840., 2052.,
      963.,  1073., 1183., 1293., 0.,    0.,    1390., 1610., 1830., 2050.,
      3768., 4224., 1970., 2206., 2442., 2678., 0.,    0.,    797.,  915.,
      1033., 1151., 2120., 2364., 1103., 1229., 1355., 1481., 0.,    0.,
      1606., 1858., 2110., 2362., 4328., 4848., 2250., 2518., 2786., 3054.,
      0.,    0.,    905.,  1039., 1173., 1307., 2400., 2676., 1243., 1385.,
      1527., 1669., 0.,    0.,    1709., 1843., 1977., 2111., 4056., 4332.,
      2095., 2237., 2379., 2521., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   596.,
      868.,   446.,   614.,   270.,   310.,   350.,   390.,   1124.,  1268.,
      902.,   1006.,  2228.,  2500.,  1454.,  1622.,  660.,   932.,   1204.,
      1476.,  3256.,  3928.,  2308.,  2708.,  5464.,  6392.,  3412.,  3940.,
      1542.,  1774.,  2006.,  2238.,  4436.,  4964.,  2558.,  2854.,  5540.,
      6196.,  3110.,  3470.,  3204.,  3860.,  4516.,  5172.,  9880.,  11320.,
      5620.,  6404.,  12088., 13784., 6724.,  7636.,  2814.,  3238.,  3662.,
      4086.,  7748.,  8660.,  4214.,  4702.,  8852.,  9892.,  4766.,  5318.,
      5748.,  6788.,  7828.,  8868.,  16504., 18712., 8932.,  10100., 18712.,
      21176., 10036., 11332., 4086.,  4702.,  5318.,  5934.,  11060., 12356.,
      5870.,  6550.,  12164., 13588., 6422.,  7166.,  510.,   1318.,  2126.,
      2934.,  4292.,  5972.,  2294.,  3166.,  4628.,  6436.,  2462.,  3398.,
      5358.,  6166.,  6974.,  7782.,  14372., 16052., 7526.,  8398.,  15476.,
      17284., 8078.,  9014.,  10836., 12644., 14452., 16260., 29752., 33496.,
      15556., 17492., 31960., 35960., 16660., 18724., 6630.,  7630.,  8630.,
      9630.,  17684., 19748., 9182.,  10246., 18788., 20980., 9734.,  10862.,
      13380., 15572., 17764., 19956., 36376., 40888., 18868., 21188., 38584.,
      43352., 19972., 22420., 7902.,  9094.,  10286., 11478., 20996., 23444.,
      10838., 12094., 22100., 24676., 11390., 12710., 15924., 18500., 21076.,
      23652., 43000., 48280., 22180., 24884., 45208., 50744., 23284., 26116.,
      9174.,  10558., 11942., 13326., 24308., 27140., 12494., 13942., 25412.,
      28372., 13046., 14558., 990.,   2566.,  4142.,  5718.,  8324.,  11540.,
      4310.,  5950.,  8660.,  12004., 4478.,  6182.,  10446., 12022., 13598.,
      15174., 27620., 30836., 14150., 15790., 28724., 32068., 14702., 16406.,
      21012., 24356., 27700., 31044., 56248., 63064., 28804., 32276., 58456.,
      65528., 29908., 33508., 11718., 13486., 15254., 17022., 30932., 34532.,
      15806., 17638., 32036., 35764., 16358., 18254., 23556., 27284., 31012.,
      34740., 62872., 70456., 32116., 35972., 65080., 72920., 33220., 37204.,
      12990., 14950., 16910., 18870., 34244., 38228., 17462., 19486., 35348.,
      39460., 18014., 20102., 26100., 30212., 34324., 38436., 69496., 77848.,
      35428., 39668., 71704., 80312., 36532., 40900., 14262., 16414., 18566.,
      20718., 37556., 41924., 19118., 21334., 38660., 43156., 19670., 21950.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   486.,
      590.,   0.,     0.,     270.,   310.,   350.,   390.,   1124.,  1268.,
      902.,   1006.,  1110.,  1214.,  0.,     0.,     620.,   828.,   1036.,
      1244.,  2920.,  3464.,  2140.,  2476.,  2812.,  3148.,  0.,     0.,
      1118.,  1286.,  1454.,  1622.,  3332.,  3732.,  2006.,  2238.,  2470.,
      2702.,  0.,     0.,     2316.,  2780.,  3244.,  3708.,  7336.,  8392.,
      4348.,  4940.,  5532.,  6124.,  0.,     0.,     1966.,  2262.,  2558.,
      2854.,  5540.,  6196.,  3110.,  3470.,  3830.,  4190.,  0.,     0.,
      3742.,  4038.,  4334.,  4630.,  9476.,  10132., 5270.,  5630.,  5990.,
      6350.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     270.,   694.,   1118.,
      1542.,  2276.,  3188.,  1286.,  1774.,  2262.,  2750.,  0.,     0.,
      2814.,  3238.,  3662.,  4086.,  7748.,  8660.,  4214.,  4702.,  5190.,
      5678.,  0.,     0.,     5708.,  6684.,  7660.,  8636.,  16168., 18248.,
      8764.,  9868.,  10972., 12076., 0.,     0.,     3662.,  4214.,  4766.,
      5318.,  9956.,  11124., 5318.,  5934.,  6550.,  7166.,  0.,     0.,
      7404.,  8636.,  9868.,  11100., 20584., 23176., 10972., 12332., 13692.,
      15052., 0.,     0.,     4510.,  5190.,  5870.,  6550.,  12164., 13588.,
      6422.,  7166.,  7910.,  8654.,  0.,     0.,     8590.,  9270.,  9950.,
      10630., 20708., 22132., 10886., 11630., 12374., 13118., 0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     510.,   1318.,  2126.,  2934.,  4292.,  5972.,
      2294.,  3166.,  4038.,  4910.,  0.,     0.,     5358.,  6166.,  6974.,
      7782.,  14372., 16052., 7526.,  8398.,  9270.,  10142., 0.,     0.,
      10796., 12540., 14284., 16028., 29416., 33032., 15388., 17260., 19132.,
      21004., 0.,     0.,     6206.,  7142.,  8078.,  9014.,  16580., 18516.,
      8630.,  9630.,  10630., 11630., 0.,     0.,     12492., 14492., 16492.,
      18492., 33832., 37960., 17596., 19724., 21852., 23980., 0.,     0.,
      7054.,  8118.,  9182.,  10246., 18788., 20980., 9734.,  10862., 11990.,
      13118., 0.,     0.,     13438., 14502., 15566., 16630., 31940., 34132.,
      16502., 17630., 18758., 19886., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    5.,    6.,    7.,    8.,    11.,   14.,
      17.,   20.,   10.,   12.,   14.,   16.,   21.,   26.,   31.,   36.,
      15.,   18.,   21.,   24.,   13.,   14.,   15.,   16.,   17.,   18.,
      19.,   20.,   47.,   50.,   53.,   56.,   34.,   36.,   38.,   40.,
      81.,   86.,   91.,   96.,   51.,   54.,   57.,   60.,   29.,   34.,
      39.,   44.,   49.,   54.,   59.,   64.,   124.,  136.,  148.,  160.,
      83.,   90.,   97.,   104.,  192.,  208.,  224.,  240.,  117.,  126.,
      135.,  144.,  52.,   56.,   60.,   64.,   68.,   72.,   76.,   80.,
      149.,  158.,  167.,  176.,  85.,   90.,   95.,   100.,  183.,  194.,
      205.,  216.,  102.,  108.,  114.,  120.,  107.,  118.,  129.,  140.,
      151.,  162.,  173.,  184.,  328.,  352.,  376.,  400.,  185.,  198.,
      211.,  224.,  396.,  424.,  452.,  480.,  219.,  234.,  249.,  264.,
      91.,   98.,   105.,  112.,  119.,  126.,  133.,  140.,  251.,  266.,
      281.,  296.,  136.,  144.,  152.,  160.,  285.,  302.,  319.,  336.,
      153.,  162.,  171.,  180.,  185.,  202.,  219.,  236.,  253.,  270.,
      287.,  304.,  532.,  568.,  604.,  640.,  287.,  306.,  325.,  344.,
      600.,  640.,  680.,  720.,  321.,  342.,  363.,  384.,  130.,  140.,
      150.,  160.,  170.,  180.,  190.,  200.,  353.,  374.,  395.,  416.,
      187.,  198.,  209.,  220.,  387.,  410.,  433.,  456.,  204.,  216.,
      228.,  240.,  13.,   26.,   39.,   52.,   65.,   78.,   91.,   104.,
      131.,  158.,  185.,  212.,  70.,   84.,   98.,   112.,  141.,  170.,
      199.,  228.,  75.,   90.,   105.,  120.,  169.,  182.,  195.,  208.,
      221.,  234.,  247.,  260.,  455.,  482.,  509.,  536.,  238.,  252.,
      266.,  280.,  489.,  518.,  547.,  576.,  255.,  270.,  285.,  300.,
      341.,  370.,  399.,  428.,  457.,  486.,  515.,  544.,  940.,  1000.,
      1060., 1120., 491.,  522.,  553.,  584.,  1008., 1072., 1136., 1200.,
      525.,  558.,  591.,  624.,  208.,  224.,  240.,  256.,  272.,  288.,
      304.,  320.,  557.,  590.,  623.,  656.,  289.,  306.,  323.,  340.,
      591.,  626.,  661.,  696.,  306.,  324.,  342.,  360.,  419.,  454.,
      489.,  524.,  559.,  594.,  629.,  664.,  1144., 1216., 1288., 1360.,
      593.,  630.,  667.,  704.,  1212., 1288., 1364., 1440., 627.,  666.,
      705.,  744.,  247.,  266.,  285.,  304.,  323.,  342.,  361.,  380.,
      659.,  698.,  737.,  776.,  340.,  360.,  380.,  400.,  693.,  734.,
      775.,  816.,  357.,  378.,  399.,  420.,  497.,  538.,  579.,  620.,
      661.,  702.,  743.,  784.,  1348., 1432., 1516., 1600., 695.,  738.,
      781.,  824.,  1416., 1504., 1592., 1680., 729.,  774.,  819.,  864.,
      286.,  308.,  330.,  352.,  374.,  396.,  418.,  440.,  761.,  806.,
      851.,  896.,  391.,  414.,  437.,  460.,  795.,  842.,  889.,  936.,
      408.,  432.,  456.,  480.,  25.,   50.,   75.,   100.,  125.,  150.,
      175.,  200.,  251.,  302.,  353.,  404.,  130.,  156.,  182.,  208.,
      261.,  314.,  367.,  420.,  135.,  162.,  189.,  216.,  325.,  350.,
      375.,  400.,  425.,  450.,  475.,  500.,  863.,  914.,  965.,  1016.,
      442.,  468.,  494.,  520.,  897.,  950.,  1003., 1056., 459.,  486.,
      513.,  540.,  653.,  706.,  759.,  812.,  865.,  918.,  971.,  1024.,
      1756., 1864., 1972., 2080., 899.,  954.,  1009., 1064., 1824., 1936.,
      2048., 2160., 933.,  990.,  1047., 1104., 364.,  392.,  420.,  448.,
      476.,  504.,  532.,  560.,  965.,  1022., 1079., 1136., 493.,  522.,
      551.,  580.,  999.,  1058., 1117., 1176., 510.,  540.,  570.,  600.,
      731.,  790.,  849.,  908.,  967.,  1026., 1085., 1144., 1960., 2080.,
      2200., 2320., 1001., 1062., 1123., 1184., 2028., 2152., 2276., 2400.,
      1035., 1098., 1161., 1224., 403.,  434.,  465.,  496.,  527.,  558.,
      589.,  620.,  1067., 1130., 1193., 1256., 544.,  576.,  608.,  640.,
      1101., 1166., 1231., 1296., 561.,  594.,  627.,  660.,  809.,  874.,
      939.,  1004., 1069., 1134., 1199., 1264., 2164., 2296., 2428., 2560.,
      1103., 1170., 1237., 1304., 2232., 2368., 2504., 2640., 1137., 1206.,
      1275., 1344., 442.,  476.,  510.,  544.,  578.,  612.,  646.,  680.,
      1169., 1238., 1307., 1376., 595.,  630.,  665.,  700.,  1203., 1274.,
      1345., 1416., 612.,  648.,  684.,  720.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    5.,   6.,   7.,    8.,    11.,   14.,
      17.,   20.,   10.,   12.,   14.,  16.,  18.,   20.,   22.,   24.,
      0.,    0.,    0.,    0.,    13.,  14.,  15.,   16.,   17.,   18.,
      19.,   20.,   47.,   50.,   53.,  56.,  34.,   36.,   38.,   40.,
      42.,   44.,   46.,   48.,   0.,   0.,   0.,    0.,    28.,   32.,
      36.,   40.,   44.,   48.,   52.,  56.,  114.,  124.,  134.,  144.,
      78.,   84.,   90.,   96.,   102., 108., 114.,  120.,  0.,    0.,
      0.,    0.,    39.,   42.,   45.,  48.,  51.,   54.,   57.,   60.,
      115.,  122.,  129.,  136.,  68.,  72.,  76.,   80.,   84.,   88.,
      92.,   96.,   0.,    0.,    0.,   0.,   80.,   88.,   96.,   104.,
      112.,  120.,  128.,  136.,  250., 268., 286.,  304.,  146.,  156.,
      166.,  176.,  186.,  196.,  206., 216., 0.,    0.,    0.,    0.,
      65.,   70.,   75.,   80.,   85.,  90.,  95.,   100.,  183.,  194.,
      205.,  216.,  102.,  108.,  114., 120., 126.,  132.,  138.,  144.,
      0.,    0.,    0.,    0.,    125., 130., 135.,  140.,  145.,  150.,
      155.,  160.,  315.,  326.,  337., 348., 174.,  180.,  186.,  192.,
      198.,  204.,  210.,  216.,  0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    7.,    14.,   21.,  28.,  35.,   42.,   49.,   56.,
      71.,   86.,   101.,  116.,  40.,  48.,  56.,   64.,   72.,   80.,
      88.,   96.,   0.,    0.,    0.,   0.,   91.,   98.,   105.,  112.,
      119.,  126.,  133.,  140.,  251., 266., 281.,  296.,  136.,  144.,
      152.,  160.,  168.,  176.,  184., 192., 0.,    0.,    0.,    0.,
      184.,  200.,  216.,  232.,  248., 264., 280.,  296.,  522.,  556.,
      590.,  624.,  282.,  300.,  318., 336., 354.,  372.,  390.,  408.,
      0.,    0.,    0.,    0.,    117., 126., 135.,  144.,  153.,  162.,
      171.,  180.,  319.,  338.,  357., 376., 170.,  180.,  190.,  200.,
      210.,  220.,  230.,  240.,  0.,   0.,   0.,    0.,    236.,  256.,
      276.,  296.,  316.,  336.,  356., 376., 658.,  700.,  742.,  784.,
      350.,  372.,  394.,  416.,  438., 460., 482.,  504.,  0.,    0.,
      0.,    0.,    143.,  154.,  165., 176., 187.,  198.,  209.,  220.,
      387.,  410.,  433.,  456.,  204., 216., 228.,  240.,  252.,  264.,
      276.,  288.,  0.,    0.,    0.,   0.,   275.,  286.,  297.,  308.,
      319.,  330.,  341.,  352.,  663., 686., 709.,  732.,  348.,  360.,
      372.,  384.,  396.,  408.,  420., 432., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    13.,  26.,  39.,   52.,   65.,   78.,
      91.,   104.,  131.,  158.,  185., 212., 70.,   84.,   98.,   112.,
      126.,  140.,  154.,  168.,  0.,   0.,   0.,    0.,    169.,  182.,
      195.,  208.,  221.,  234.,  247., 260., 455.,  482.,  509.,  536.,
      238.,  252.,  266.,  280.,  294., 308., 322.,  336.,  0.,    0.,
      0.,    0.,    340.,  368.,  396., 424., 452.,  480.,  508.,  536.,
      930.,  988.,  1046., 1104., 486., 516., 546.,  576.,  606.,  636.,
      666.,  696.,  0.,    0.,    0.,   0.,   195.,  210.,  225.,  240.,
      255.,  270.,  285.,  300.,  523., 554., 585.,  616.,  272.,  288.,
      304.,  320.,  336.,  352.,  368., 384., 0.,    0.,    0.,    0.,
      392.,  424.,  456.,  488.,  520., 552., 584.,  616.,  1066., 1132.,
      1198., 1264., 554.,  588.,  622., 656., 690.,  724.,  758.,  792.,
      0.,    0.,    0.,    0.,    221., 238., 255.,  272.,  289.,  306.,
      323.,  340.,  591.,  626.,  661., 696., 306.,  324.,  342.,  360.,
      378.,  396.,  414.,  432.,  0.,   0.,   0.,    0.,    425.,  442.,
      459.,  476.,  493.,  510.,  527., 544., 1011., 1046., 1081., 1116.,
      522.,  540.,  558.,  576.,  594., 612., 630.,  648.,  0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    29.,    35.,    41.,    47.,    64.,
      84.,    104.,   124.,   67.,    81.,    95.,    109.,   140.,   176.,
      212.,   248.,   105.,   127.,   149.,   171.,   77.,    83.,    89.,
      95.,    101.,   107.,   113.,   119.,   304.,   324.,   344.,   364.,
      235.,   249.,   263.,   277.,   572.,   608.,   644.,   680.,   369.,
      391.,   413.,   435.,   172.,   208.,   244.,   280.,   316.,   352.,
      388.,   424.,   836.,   924.,   1012.,  1100.,  584.,   636.,   688.,
      740.,   1372.,  1492.,  1612.,  1732.,  852.,   920.,   988.,   1056.,
      383.,   413.,   443.,   473.,   503.,   533.,   563.,   593.,   1108.,
      1176.,  1244.,  1312.,  637.,   675.,   713.,   751.,   1376.,  1460.,
      1544.,  1628.,  771.,   817.,   863.,   909.,   784.,   868.,   952.,
      1036.,  1120.,  1204.,  1288.,  1372.,  2444.,  2628.,  2812.,  2996.,
      1388.,  1488.,  1588.,  1688.,  2980.,  3196.,  3412.,  3628.,  1656.,
      1772.,  1888.,  2004.,  689.,   743.,   797.,   851.,   905.,   959.,
      1013.,  1067.,  1912.,  2028.,  2144.,  2260.,  1039.,  1101.,  1163.,
      1225.,  2180.,  2312.,  2444.,  2576.,  1173.,  1243.,  1313.,  1383.,
      1396.,  1528.,  1660.,  1792.,  1924.,  2056.,  2188.,  2320.,  4052.,
      4332.,  4612.,  4892.,  2192.,  2340.,  2488.,  2636.,  4588.,  4900.,
      5212.,  5524.,  2460.,  2624.,  2788.,  2952.,  995.,   1073.,  1151.,
      1229.,  1307.,  1385.,  1463.,  1541.,  2716.,  2880.,  3044.,  3208.,
      1441.,  1527.,  1613.,  1699.,  2984.,  3164.,  3344.,  3524.,  1575.,
      1669.,  1763.,  1857.,  77.,    179.,   281.,   383.,   485.,   587.,
      689.,   791.,   976.,   1188.,  1400.,  1612.,  523.,   633.,   743.,
      853.,   1052.,  1280.,  1508.,  1736.,  561.,   679.,   797.,   915.,
      1301.,  1403.,  1505.,  1607.,  1709.,  1811.,  1913.,  2015.,  3520.,
      3732.,  3944.,  4156.,  1843.,  1953.,  2063.,  2173.,  3788.,  4016.,
      4244.,  4472.,  1977.,  2095.,  2213.,  2331.,  2620.,  2848.,  3076.,
      3304.,  3532.,  3760.,  3988.,  4216.,  7268.,  7740.,  8212.,  8684.,
      3800.,  4044.,  4288.,  4532.,  7804.,  8308.,  8812.,  9316.,  4068.,
      4328.,  4588.,  4848.,  1607.,  1733.,  1859.,  1985.,  2111.,  2237.,
      2363.,  2489.,  4324.,  4584.,  4844.,  5104.,  2245.,  2379.,  2513.,
      2647.,  4592.,  4868.,  5144.,  5420.,  2379.,  2521.,  2663.,  2805.,
      3232.,  3508.,  3784.,  4060.,  4336.,  4612.,  4888.,  5164.,  8876.,
      9444.,  10012., 10580., 4604.,  4896.,  5188.,  5480.,  9412.,  10012.,
      10612., 11212., 4872.,  5180.,  5488.,  5796.,  1913.,  2063.,  2213.,
      2363.,  2513.,  2663.,  2813.,  2963.,  5128.,  5436.,  5744.,  6052.,
      2647.,  2805.,  2963.,  3121.,  5396.,  5720.,  6044.,  6368.,  2781.,
      2947.,  3113.,  3279.,  3844.,  4168.,  4492.,  4816.,  5140.,  5464.,
      5788.,  6112.,  10484., 11148., 11812., 12476., 5408.,  5748.,  6088.,
      6428.,  11020., 11716., 12412., 13108., 5676.,  6032.,  6388.,  6744.,
      2219.,  2393.,  2567.,  2741.,  2915.,  3089.,  3263.,  3437.,  5932.,
      6288.,  6644.,  7000.,  3049.,  3231.,  3413.,  3595.,  6200.,  6572.,
      6944.,  7316.,  3183.,  3373.,  3563.,  3753.,  149.,   347.,   545.,
      743.,   941.,   1139.,  1337.,  1535.,  1888.,  2292.,  2696.,  3100.,
      979.,   1185.,  1391.,  1597.,  1964.,  2384.,  2804.,  3224.,  1017.,
      1231.,  1445.,  1659.,  2525.,  2723.,  2921.,  3119.,  3317.,  3515.,
      3713.,  3911.,  6736.,  7140.,  7544.,  7948.,  3451.,  3657.,  3863.,
      4069.,  7004.,  7424.,  7844.,  8264.,  3585.,  3799.,  4013.,  4227.,
      5068.,  5488.,  5908.,  6328.,  6748.,  7168.,  7588.,  8008.,  13700.,
      14556., 15412., 16268., 7016.,  7452.,  7888.,  8324.,  14236., 15124.,
      16012., 16900., 7284.,  7736.,  8188.,  8640.,  2831.,  3053.,  3275.,
      3497.,  3719.,  3941.,  4163.,  4385.,  7540.,  7992.,  8444.,  8896.,
      3853.,  4083.,  4313.,  4543.,  7808.,  8276.,  8744.,  9212.,  3987.,
      4225.,  4463.,  4701.,  5680.,  6148.,  6616.,  7084.,  7552.,  8020.,
      8488.,  8956.,  15308., 16260., 17212., 18164., 7820.,  8304.,  8788.,
      9272.,  15844., 16828., 17812., 18796., 8088.,  8588.,  9088.,  9588.,
      3137.,  3383.,  3629.,  3875.,  4121.,  4367.,  4613.,  4859.,  8344.,
      8844.,  9344.,  9844.,  4255.,  4509.,  4763.,  5017.,  8612.,  9128.,
      9644.,  10160., 4389.,  4651.,  4913.,  5175.,  6292.,  6808.,  7324.,
      7840.,  8356.,  8872.,  9388.,  9904.,  16916., 17964., 19012., 20060.,
      8624.,  9156.,  9688.,  10220., 17452., 18532., 19612., 20692., 8892.,
      9440.,  9988.,  10536., 3443.,  3713.,  3983.,  4253.,  4523.,  4793.,
      5063.,  5333.,  9148.,  9696.,  10244., 10792., 4657.,  4935.,  5213.,
      5491.,  9416.,  9980.,  10544., 11108., 4791.,  5077.,  5363.,  5649.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   29.,   35.,   41.,   47.,   64.,   84.,
      104.,  124.,  67.,   81.,   95.,   109.,  123.,  137.,  151.,  165.,
      0.,    0.,    0.,    0.,    77.,   83.,   89.,   95.,   101.,  107.,
      113.,  119.,  304.,  324.,  344.,  364.,  235.,  249.,  263.,  277.,
      291.,  305.,  319.,  333.,  0.,    0.,    0.,    0.,    166.,  194.,
      222.,  250.,  278.,  306.,  334.,  362.,  760.,  832.,  904.,  976.,
      546.,  590.,  634.,  678.,  722.,  766.,  810.,  854.,  0.,    0.,
      0.,    0.,    281.,  303.,  325.,  347.,  369.,  391.,  413.,  435.,
      840.,  892.,  944.,  996.,  503.,  533.,  563.,  593.,  623.,  653.,
      683.,  713.,  0.,    0.,    0.,    0.,    574.,  634.,  694.,  754.,
      814.,  874.,  934.,  994.,  1832., 1968., 2104., 2240., 1082., 1158.,
      1234., 1310., 1386., 1462., 1538., 1614., 0.,    0.,    0.,    0.,
      485.,  523.,  561.,  599.,  637.,  675.,  713.,  751.,  1376., 1460.,
      1544., 1628., 771.,  817.,  863.,  909.,  955.,  1001., 1047., 1093.,
      0.,    0.,    0.,    0.,    941.,  979.,  1017., 1055., 1093., 1131.,
      1169., 1207., 2384., 2468., 2552., 2636., 1323., 1369., 1415., 1461.,
      1507., 1553., 1599., 1645., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    41.,   95.,   149.,  203.,  257.,  311.,  365.,  419.,
      520.,  636.,  752.,  868.,  295.,  357.,  419.,  481.,  543.,  605.,
      667.,  729.,  0.,    0.,    0.,    0.,    689.,  743.,  797.,  851.,
      905.,  959.,  1013., 1067., 1912., 2028., 2144., 2260., 1039., 1101.,
      1163., 1225., 1287., 1349., 1411., 1473., 0.,    0.,    0.,    0.,
      1390., 1514., 1638., 1762., 1886., 2010., 2134., 2258., 3976., 4240.,
      4504., 4768., 2154., 2294., 2434., 2574., 2714., 2854., 2994., 3134.,
      0.,    0.,    0.,    0.,    893.,  963.,  1033., 1103., 1173., 1243.,
      1313., 1383., 2448., 2596., 2744., 2892., 1307., 1385., 1463., 1541.,
      1619., 1697., 1775., 1853., 0.,    0.,    0.,    0.,    1798., 1954.,
      2110., 2266., 2422., 2578., 2734., 2890., 5048., 5376., 5704., 6032.,
      2690., 2862., 3034., 3206., 3378., 3550., 3722., 3894., 0.,    0.,
      0.,    0.,    1097., 1183., 1269., 1355., 1441., 1527., 1613., 1699.,
      2984., 3164., 3344., 3524., 1575., 1669., 1763., 1857., 1951., 2045.,
      2139., 2233., 0.,    0.,    0.,    0.,    2129., 2215., 2301., 2387.,
      2473., 2559., 2645., 2731., 5144., 5324., 5504., 5684., 2703., 2797.,
      2891., 2985., 3079., 3173., 3267., 3361., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    77.,   179.,  281.,  383.,  485.,  587.,
      689.,  791.,  976.,  1188., 1400., 1612., 523.,  633.,  743.,  853.,
      963.,  1073., 1183., 1293., 0.,    0.,    0.,    0.,    1301., 1403.,
      1505., 1607., 1709., 1811., 1913., 2015., 3520., 3732., 3944., 4156.,
      1843., 1953., 2063., 2173., 2283., 2393., 2503., 2613., 0.,    0.,
      0.,    0.,    2614., 2834., 3054., 3274., 3494., 3714., 3934., 4154.,
      7192., 7648., 8104., 8560., 3762., 3998., 4234., 4470., 4706., 4942.,
      5178., 5414., 0.,    0.,    0.,    0.,    1505., 1623., 1741., 1859.,
      1977., 2095., 2213., 2331., 4056., 4300., 4544., 4788., 2111., 2237.,
      2363., 2489., 2615., 2741., 2867., 2993., 0.,    0.,    0.,    0.,
      3022., 3274., 3526., 3778., 4030., 4282., 4534., 4786., 8264., 8784.,
      9304., 9824., 4298., 4566., 4834., 5102., 5370., 5638., 5906., 6174.,
      0.,    0.,    0.,    0.,    1709., 1843., 1977., 2111., 2245., 2379.,
      2513., 2647., 4592., 4868., 5144., 5420., 2379., 2521., 2663., 2805.,
      2947., 3089., 3231., 3373., 0.,    0.,    0.,    0.,    3317., 3451.,
      3585., 3719., 3853., 3987., 4121., 4255., 7904., 8180., 8456., 8732.,
      4083., 4225., 4367., 4509., 4651., 4793., 4935., 5077., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    190.,   230.,   270.,   310.,
      420.,    564.,    708.,    852.,    486.,   590.,   694.,   798.,
      1012.,   1284.,   1556.,   1828.,   782.,   950.,   1118.,  1286.,
      510.,    550.,    590.,    630.,    670.,   710.,   750.,   790.,
      2148.,   2292.,   2436.,   2580.,   1734.,  1838.,  1942.,  2046.,
      4276.,   4548.,   4820.,   5092.,   2798.,  2966.,  3134.,  3302.,
      1140.,   1412.,   1684.,   1956.,   2228.,  2500.,  2772.,  3044.,
      6072.,   6744.,   7416.,   8088.,   4356.,  4756.,  5156.,  5556.,
      10328.,  11256.,  12184.,  13112.,  6484.,  7012.,  7540.,  8068.,
      2934.,   3166.,   3398.,   3630.,   3862.,  4094.,  4326.,  4558.,
      8532.,   9060.,   9588.,   10116.,  4926.,  5222.,  5518.,  5814.,
      10660.,  11316.,  11972.,  12628.,  5990.,  6350.,  6710.,  7070.,
      5988.,   6644.,   7300.,   7956.,   8612.,  9268.,  9924.,  10580.,
      18840.,  20280.,  21720.,  23160.,  10740., 11524., 12308., 13092.,
      23096.,  24792.,  26488.,  28184.,  12868., 13780., 14692., 15604.,
      5358.,   5782.,   6206.,   6630.,   7054.,  7478.,  7902.,  8326.,
      14916.,  15828.,  16740.,  17652.,  8118.,  8606.,  9094.,  9582.,
      17044.,  18084.,  19124.,  20164.,  9182.,  9734.,  10286., 10838.,
      10836.,  11876.,  12916.,  13956.,  14996., 16036., 17076., 18116.,
      31608.,  33816.,  36024.,  38232.,  17124., 18292., 19460., 20628.,
      35864.,  38328.,  40792.,  43256.,  19252., 20548., 21844., 23140.,
      7782.,   8398.,   9014.,   9630.,   10246., 10862., 11478., 12094.,
      21300.,  22596.,  23892.,  25188.,  11310., 11990., 12670., 13350.,
      23428.,  24852.,  26276.,  27700.,  12374., 13118., 13862., 14606.,
      510.,    1318.,   2126.,   2934.,   3742.,  4550.,  5358.,  6166.,
      7524.,   9204.,   10884.,  12564.,  4038.,  4910.,  5782.,  6654.,
      8116.,   9924.,   11732.,  13540.,  4334.,  5270.,  6206.,  7142.,
      10206.,  11014.,  11822.,  12630.,  13438., 14246., 15054., 15862.,
      27684.,  29364.,  31044.,  32724.,  14502., 15374., 16246., 17118.,
      29812.,  31620.,  33428.,  35236.,  15566., 16502., 17438., 18374.,
      20532.,  22340.,  24148.,  25956.,  27764., 29572., 31380., 33188.,
      57144.,  60888.,  64632.,  68376.,  29892., 31828., 33764., 35700.,
      61400.,  65400.,  69400.,  73400.,  32020., 34084., 36148., 38212.,
      12630.,  13630.,  14630.,  15630.,  16630., 17630., 18630., 19630.,
      34068.,  36132.,  38196.,  40260.,  17694., 18758., 19822., 20886.,
      36196.,  38388.,  40580.,  42772.,  18758., 19886., 21014., 22142.,
      25380.,  27572.,  29764.,  31956.,  34148., 36340., 38532., 40724.,
      69912.,  74424.,  78936.,  83448.,  36276., 38596., 40916., 43236.,
      74168.,  78936.,  83704.,  88472.,  38404., 40852., 43300., 45748.,
      15054.,  16246.,  17438.,  18630.,  19822., 21014., 22206., 23398.,
      40452.,  42900.,  45348.,  47796.,  20886., 22142., 23398., 24654.,
      42580.,  45156.,  47732.,  50308.,  21950., 23270., 24590., 25910.,
      30228.,  32804.,  35380.,  37956.,  40532., 43108., 45684., 48260.,
      82680.,  87960.,  93240.,  98520.,  42660., 45364., 48068., 50772.,
      86936.,  92472.,  98008.,  103544., 44788., 47620., 50452., 53284.,
      17478.,  18862.,  20246.,  21630.,  23014., 24398., 25782., 27166.,
      46836.,  49668.,  52500.,  55332.,  24078., 25526., 26974., 28422.,
      48964.,  51924.,  54884.,  57844.,  25142., 26654., 28166., 29678.,
      990.,    2566.,   4142.,   5718.,   7294.,  8870.,  10446., 12022.,
      14628.,  17844.,  21060.,  24276.,  7590.,  9230.,  10870., 12510.,
      15220.,  18564.,  21908.,  25252.,  7886.,  9590.,  11294., 12998.,
      19902.,  21478.,  23054.,  24630.,  26206., 27782., 29358., 30934.,
      53220.,  56436.,  59652.,  62868.,  27270., 28910., 30550., 32190.,
      55348.,  58692.,  62036.,  65380.,  28334., 30038., 31742., 33446.,
      39924.,  43268.,  46612.,  49956.,  53300., 56644., 59988., 63332.,
      108216., 115032., 121848., 128664., 55428., 58900., 62372., 65844.,
      112472., 119544., 126616., 133688., 57556., 61156., 64756., 68356.,
      22326.,  24094.,  25862.,  27630.,  29398., 31166., 32934., 34702.,
      59604.,  63204.,  66804.,  70404.,  30462., 32294., 34126., 35958.,
      61732.,  65460.,  69188.,  72916.,  31526., 33422., 35318., 37214.,
      44772.,  48500.,  52228.,  55956.,  59684., 63412., 67140., 70868.,
      120984., 128568., 136152., 143736., 61812., 65668., 69524., 73380.,
      125240., 133080., 140920., 148760., 63940., 67924., 71908., 75892.,
      24750.,  26710.,  28670.,  30630.,  32590., 34550., 36510., 38470.,
      65988.,  69972.,  73956.,  77940.,  33654., 35678., 37702., 39726.,
      68116.,  72228.,  76340.,  80452.,  34718., 36806., 38894., 40982.,
      49620.,  53732.,  57844.,  61956.,  66068., 70180., 74292., 78404.,
      133752., 142104., 150456., 158808., 68196., 72436., 76676., 80916.,
      138008., 146616., 155224., 163832., 70324., 74692., 79060., 83428.,
      27174.,  29326.,  31478.,  33630.,  35782., 37934., 40086., 42238.,
      72372.,  76740.,  81108.,  85476.,  36846., 39062., 41278., 43494.,
      74500.,  78996.,  83492.,  87988.,  37910., 40190., 42470., 44750.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   190.,   230.,   270.,   310.,   420.,
      564.,   708.,   852.,   486.,   590.,   694.,   798.,   902.,   1006.,
      1110.,  1214.,  0.,     0.,     0.,     0.,     510.,   550.,   590.,
      630.,   670.,   710.,   750.,   790.,   2148.,  2292.,  2436.,  2580.,
      1734.,  1838.,  1942.,  2046.,  2150.,  2254.,  2358.,  2462.,  0.,
      0.,     0.,     0.,     1100.,  1308.,  1516.,  1724.,  1932.,  2140.,
      2348.,  2556.,  5480.,  6024.,  6568.,  7112.,  4060.,  4396.,  4732.,
      5068.,  5404.,  5740.,  6076.,  6412.,  0.,     0.,     0.,     0.,
      2126.,  2294.,  2462.,  2630.,  2798.,  2966.,  3134.,  3302.,  6404.,
      6804.,  7204.,  7604.,  3862.,  4094.,  4326.,  4558.,  4790.,  5022.,
      5254.,  5486.,  0.,     0.,     0.,     0.,     4332.,  4796.,  5260.,
      5724.,  6188.,  6652.,  7116.,  7580.,  13992., 15048., 16104., 17160.,
      8316.,  8908.,  9500.,  10092., 10684., 11276., 11868., 12460., 0.,
      0.,     0.,     0.,     3742.,  4038.,  4334.,  4630.,  4926.,  5222.,
      5518.,  5814.,  10660., 11316., 11972., 12628., 5990.,  6350.,  6710.,
      7070.,  7430.,  7790.,  8150.,  8510.,  0.,     0.,     0.,     0.,
      7294.,  7590.,  7886.,  8182.,  8478.,  8774.,  9070.,  9366.,  18532.,
      19188., 19844., 20500., 10310., 10670., 11030., 11390., 11750., 12110.,
      12470., 12830., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     270.,   694.,   1118.,  1542.,  1966.,  2390.,
      2814.,  3238.,  3972.,  4884.,  5796.,  6708.,  2262.,  2750.,  3238.,
      3726.,  4214.,  4702.,  5190.,  5678.,  0.,     0.,     0.,     0.,
      5358.,  5782.,  6206.,  6630.,  7054.,  7478.,  7902.,  8326.,  14916.,
      15828., 16740., 17652., 8118.,  8606.,  9094.,  9582.,  10070., 10558.,
      11046., 11534., 0.,     0.,     0.,     0.,     10796., 11772., 12748.,
      13724., 14700., 15676., 16652., 17628., 31016., 33096., 35176., 37256.,
      16828., 17932., 19036., 20140., 21244., 22348., 23452., 24556., 0.,
      0.,     0.,     0.,     6974.,  7526.,  8078.,  8630.,  9182.,  9734.,
      10286., 10838., 19172., 20340., 21508., 22676., 10246., 10862., 11478.,
      12094., 12710., 13326., 13942., 14558., 0.,     0.,     0.,     0.,
      14028., 15260., 16492., 17724., 18956., 20188., 21420., 22652., 39528.,
      42120., 44712., 47304., 21084., 22444., 23804., 25164., 26524., 27884.,
      29244., 30604., 0.,     0.,     0.,     0.,     8590.,  9270.,  9950.,
      10630., 11310., 11990., 12670., 13350., 23428., 24852., 26276., 27700.,
      12374., 13118., 13862., 14606., 15350., 16094., 16838., 17582., 0.,
      0.,     0.,     0.,     16750., 17430., 18110., 18790., 19470., 20150.,
      20830., 21510., 40516., 41940., 43364., 44788., 21302., 22046., 22790.,
      23534., 24278., 25022., 25766., 26510., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     510.,   1318.,  2126.,
      2934.,  3742.,  4550.,  5358.,  6166.,  7524.,  9204.,  10884., 12564.,
      4038.,  4910.,  5782.,  6654.,  7526.,  8398.,  9270.,  10142., 0.,
      0.,     0.,     0.,     10206., 11014., 11822., 12630., 13438., 14246.,
      15054., 15862., 27684., 29364., 31044., 32724., 14502., 15374., 16246.,
      17118., 17990., 18862., 19734., 20606., 0.,     0.,     0.,     0.,
      20492., 22236., 23980., 25724., 27468., 29212., 30956., 32700., 56552.,
      60168., 63784., 67400., 29596., 31468., 33340., 35212., 37084., 38956.,
      40828., 42700., 0.,     0.,     0.,     0.,     11822., 12758., 13694.,
      14630., 15566., 16502., 17438., 18374., 31940., 33876., 35812., 37748.,
      16630., 17630., 18630., 19630., 20630., 21630., 22630., 23630., 0.,
      0.,     0.,     0.,     23724., 25724., 27724., 29724., 31724., 33724.,
      35724., 37724., 65064., 69192., 73320., 77448., 33852., 35980., 38108.,
      40236., 42364., 44492., 46620., 48748., 0.,     0.,     0.,     0.,
      13438., 14502., 15566., 16630., 17694., 18758., 19822., 20886., 36196.,
      38388., 40580., 42772., 18758., 19886., 21014., 22142., 23270., 24398.,
      25526., 26654., 0.,     0.,     0.,     0.,     26206., 27270., 28334.,
      29398., 30462., 31526., 32590., 33654., 62500., 64692., 66884., 69076.,
      32294., 33422., 34550., 35678., 36806., 37934., 39062., 40190., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   13.,  8.,   4.,   5.,   14.,  10.,
      24.,  15.,  34.,  20.,  12.,  18.,  44.,  28.,  64.,  38.,  84.,  48.,
      20.,  25.,  54.,  30.,  64.,  35.,  74.,  40.,  44.,  58.,  124., 68.,
      144., 78.,  164., 88.,  36.,  45.,  94.,  50.,  104., 55.,  114., 60.,
      76.,  98.,  204., 108., 224., 118., 244., 128., 52.,  65.,  134., 70.,
      144., 75.,  154., 80.,  17.,  34.,  69.,  36.,  73.,  38.,  77.,  40.,
      68.,  85.,  174., 90.,  184., 95.,  194., 100., 140., 178., 364., 188.,
      384., 198., 404., 208., 84.,  105., 214., 110., 224., 115., 234., 120.,
      172., 218., 444., 228., 464., 238., 484., 248., 100., 125., 254., 130.,
      264., 135., 274., 140., 204., 258., 524., 268., 544., 278., 564., 288.,
      116., 145., 294., 150., 304., 155., 314., 160., 33.,  66.,  133., 68.,
      137., 70.,  141., 72.,  132., 165., 334., 170., 344., 175., 354., 180.,
      268., 338., 684., 348., 704., 358., 724., 368., 148., 185., 374., 190.,
      384., 195., 394., 200., 300., 378., 764., 388., 784., 398., 804., 408.,
      164., 205., 414., 210., 424., 215., 434., 220., 332., 418., 844., 428.,
      864., 438., 884., 448., 180., 225., 454., 230., 464., 235., 474., 240.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   9.,   0.,   4.,   5.,   14.,  10.,
      24.,  15.,  18.,  0.,   11.,  16.,  40.,  26.,  60.,  36.,  45.,  0.,
      16.,  20.,  44.,  25.,  54.,  30.,  36.,  0.,   35.,  46.,  100., 56.,
      120., 66.,  81.,  0.,   28.,  35.,  74.,  40.,  84.,  45.,  54.,  0.,
      49.,  56.,  119., 64.,  135., 72.,  81.,  0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   10.,  20.,  41.,  22.,  45.,  24.,  36.,  0.,
      40.,  50.,  104., 55.,  114., 60.,  72.,  0.,   83.,  106., 220., 116.,
      240., 126., 153., 0.,   52.,  65.,  134., 70.,  144., 75.,  90.,  0.,
      107., 136., 280., 146., 300., 156., 189., 0.,   64.,  80.,  164., 85.,
      174., 90.,  108., 0.,   112., 128., 263., 136., 279., 144., 162., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   19.,  38.,  77.,  40.,
      81.,  42.,  63.,  0.,   76.,  95.,  194., 100., 204., 105., 126., 0.,
      155., 196., 400., 206., 420., 216., 261., 0.,   88.,  110., 224., 115.,
      234., 120., 144., 0.,   179., 226., 460., 236., 480., 246., 297., 0.,
      100., 125., 254., 130., 264., 135., 162., 0.,   175., 200., 407., 208.,
      423., 216., 243., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   84.,   53.,   23.,   29.,
      88.,   67.,   164.,  105.,  240.,  143.,  70.,   114.,  288.,  190.,
      440.,  266.,  592.,  342.,  143.,  181.,  392.,  219.,  468.,  257.,
      544.,  295.,  310.,  418.,  896.,  494.,  1048., 570.,  1200., 646.,
      263.,  333.,  696.,  371.,  772.,  409.,  848.,  447.,  550.,  722.,
      1504., 798.,  1656., 874.,  1808., 950.,  383.,  485.,  1000., 523.,
      1076., 561.,  1152., 599.,  101.,  235.,  476.,  249.,  504.,  263.,
      532.,  277.,  503.,  637.,  1304., 675.,  1380., 713.,  1456., 751.,
      1030., 1330., 2720., 1406., 2872., 1482., 3024., 1558., 623.,  789.,
      1608., 827.,  1684., 865.,  1760., 903.,  1270., 1634., 3328., 1710.,
      3480., 1786., 3632., 1862., 743.,  941.,  1912., 979.,  1988., 1017.,
      2064., 1055., 1510., 1938., 3936., 2014., 4088., 2090., 4240., 2166.,
      863.,  1093., 2216., 1131., 2292., 1169., 2368., 1207., 197.,  459.,
      924.,  473.,  952.,  487.,  980.,  501.,  983.,  1245., 2520., 1283.,
      2596., 1321., 2672., 1359., 1990., 2546., 5152., 2622., 5304., 2698.,
      5456., 2774., 1103., 1397., 2824., 1435., 2900., 1473., 2976., 1511.,
      2230., 2850., 5760., 2926., 5912., 3002., 6064., 3078., 1223., 1549.,
      3128., 1587., 3204., 1625., 3280., 1663., 2470., 3154., 6368., 3230.,
      6520., 3306., 6672., 3382., 1343., 1701., 3432., 1739., 3508., 1777.,
      3584., 1815.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   61.,   0.,    23.,   29.,
      88.,   67.,   164.,  105.,  127.,  0.,    64.,   100.,  260.,  176.,
      412.,  252.,  320.,  0.,    113.,  143.,  316.,  181.,  392.,  219.,
      265.,  0.,    244.,  328.,  716.,  404.,  868.,  480.,  596.,  0.,
      203.,  257.,  544.,  295.,  620.,  333.,  403.,  0.,    365.,  419.,
      892.,  481.,  1016., 543.,  613.,  0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    59.,   137.,  280.,  151.,  308.,  165.,
      259.,  0.,    293.,  371.,  772.,  409.,  848.,  447.,  541.,  0.,
      604.,  784.,  1628., 860.,  1780., 936.,  1148., 0.,    383.,  485.,
      1000., 523.,  1076., 561.,  679.,  0.,    784.,  1012., 2084., 1088.,
      2236., 1164., 1424., 0.,    473.,  599.,  1228., 637.,  1304., 675.,
      817.,  0.,    851.,  977.,  2008., 1039., 2132., 1101., 1243., 0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    113.,  263.,
      532.,  277.,  560.,  291.,  457.,  0.,    563.,  713.,  1456., 751.,
      1532., 789.,  955.,  0.,    1144., 1468., 2996., 1544., 3148., 1620.,
      1976., 0.,    653.,  827.,  1684., 865.,  1760., 903.,  1093., 0.,
      1324., 1696., 3452., 1772., 3604., 1848., 2252., 0.,    743.,  941.,
      1912., 979.,  1988., 1017., 1231., 0.,    1337., 1535., 3124., 1597.,
      3248., 1659., 1873., 0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,   388.,   278.,   596.,   382.,   150.,
      190.,   612.,   486.,   1204.,  782.,   1796.,  1078.,  460.,   796.,
      2056.,  1388.,  3240.,  1980.,  4424.,  2572.,  1078.,  1374.,  2980.,
      1670.,  3572.,  1966.,  4164.,  2262.,  2316.,  3164.,  6792.,  3756.,
      7976.,  4348.,  9160.,  4940.,  2006.,  2558.,  5348.,  2854.,  5940.,
      3150.,  6532.,  3446.,  4172.,  5532.,  11528., 6124.,  12712., 6716.,
      13896., 7308.,  2934.,  3742.,  7716.,  4038.,  8308.,  4334.,  8900.,
      4630.,  670.,   1734.,  3508.,  1838.,  3716.,  1942.,  3924.,  2046.,
      3862.,  4926.,  10084., 5222.,  10676., 5518.,  11268., 5814.,  7884.,
      10268., 21000., 10860., 22184., 11452., 23368., 12044., 4790.,  6110.,
      12452., 6406.,  13044., 6702.,  13636., 6998.,  9740.,  12636., 25736.,
      13228., 26920., 13820., 28104., 14412., 5718.,  7294.,  14820., 7590.,
      15412., 7886.,  16004., 8182.,  11596., 15004., 30472., 15596., 31656.,
      16188., 32840., 16780., 6646.,  8478.,  17188., 8774.,  17780., 9070.,
      18372., 9366.,  1310.,  3398.,  6836.,  3502.,  7044.,  3606.,  7252.,
      3710.,  7574.,  9662.,  19556., 9958.,  20148., 10254., 20740., 10550.,
      15308., 19740., 39944., 20332., 41128., 20924., 42312., 21516., 8502.,
      10846., 21924., 11142., 22516., 11438., 23108., 11734., 17164., 22108.,
      44680., 22700., 45864., 23292., 47048., 23884., 9430.,  12030., 24292.,
      12326., 24884., 12622., 25476., 12918., 19020., 24476., 49416., 25068.,
      50600., 25660., 51784., 26252., 10358., 13214., 26660., 13510., 27252.,
      13806., 27844., 14102.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,   388.,   278.,   446.,   0.,     150.,
      190.,   612.,   486.,   1204.,  782.,   950.,   0.,     420.,   692.,
      1848.,  1284.,  3032.,  1876.,  2404.,  0.,     846.,   1078.,  2388.,
      1374.,  2980.,  1670.,  2030.,  0.,     1812.,  2468.,  5400.,  3060.,
      6584.,  3652.,  4564.,  0.,     1542.,  1966.,  4164.,  2262.,  4756.,
      2558.,  3110.,  0.,     2814.,  3238.,  6900.,  3726.,  7876.,  4214.,
      4766.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     390.,   1006.,  2052.,  1110.,  2260.,  1214.,  1958.,  0.,
      2238.,  2854.,  5940.,  3150.,  6532.,  3446.,  4190.,  0.,     4596.,
      6020.,  12504., 6612.,  13688., 7204.,  8884.,  0.,     2934.,  3742.,
      7716.,  4038.,  8308.,  4334.,  5270.,  0.,     5988.,  7796.,  16056.,
      8388.,  17240., 8980.,  11044., 0.,     3630.,  4630.,  9492.,  4926.,
      10084., 5222.,  6350.,  0.,     6630.,  7630.,  15684., 8118.,  16660.,
      8606.,  9734.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     750.,   1942.,  3924.,  2046.,  4132.,  2150.,  3470.,
      0.,     4326.,  5518.,  11268., 5814.,  11860., 6110.,  7430.,  0.,
      8772.,  11348., 23160., 11940., 24344., 12532., 15364., 0.,     5022.,
      6406.,  13044., 6702.,  13636., 6998.,  8510.,  0.,     10164., 13124.,
      26712., 13716., 27896., 14308., 17524., 0.,     5718.,  7294.,  14820.,
      7590.,  15412., 7886.,  9590.,  0.,     10446., 12022., 24468., 12510.,
      25444., 12998., 14702., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    7.,    10.,   6.,    8.,    13.,   18.,
      9.,    12.,   19.,   26.,   12.,   16.,   7.,    8.,    9.,    10.,
      25.,   28.,   18.,   20.,   43.,   48.,   27.,   30.,   61.,   68.,
      36.,   40.,   18.,   24.,   30.,   36.,   74.,   88.,   48.,   56.,
      110.,  128.,  66.,   76.,   146.,  168.,  84.,   96.,   35.,   40.,
      45.,   50.,   97.,   108.,  54.,   60.,   115.,  128.,  63.,   70.,
      133.,  148.,  72.,   80.,   74.,   88.,   102.,  116.,  218.,  248.,
      120.,  136.,  254.,  288.,  138.,  156.,  290.,  328.,  156.,  176.,
      63.,   72.,   81.,   90.,   169.,  188.,  90.,   100.,  187.,  208.,
      99.,   110.,  205.,  228.,  108.,  120.,  130.,  152.,  174.,  196.,
      362.,  408.,  192.,  216.,  398.,  448.,  210.,  236.,  434.,  488.,
      228.,  256.,  91.,   104.,  117.,  130.,  241.,  268.,  126.,  140.,
      259.,  288.,  135.,  150.,  277.,  308.,  144.,  160.,  17.,   34.,
      51.,   68.,   103.,  138.,  54.,   72.,   109.,  146.,  57.,   76.,
      115.,  154.,  60.,   80.,   119.,  136.,  153.,  170.,  313.,  348.,
      162.,  180.,  331.,  368.,  171.,  190.,  349.,  388.,  180.,  200.,
      242.,  280.,  318.,  356.,  650.,  728.,  336.,  376.,  686.,  768.,
      354.,  396.,  722.,  808.,  372.,  416.,  147.,  168.,  189.,  210.,
      385.,  428.,  198.,  220.,  403.,  448.,  207.,  230.,  421.,  468.,
      216.,  240.,  298.,  344.,  390.,  436.,  794.,  888.,  408.,  456.,
      830.,  928.,  426.,  476.,  866.,  968.,  444.,  496.,  175.,  200.,
      225.,  250.,  457.,  508.,  234.,  260.,  475.,  528.,  243.,  270.,
      493.,  548.,  252.,  280.,  354.,  408.,  462.,  516.,  938.,  1048.,
      480.,  536.,  974.,  1088., 498.,  556.,  1010., 1128., 516.,  576.,
      203.,  232.,  261.,  290.,  529.,  588.,  270.,  300.,  547.,  608.,
      279.,  310.,  565.,  628.,  288.,  320.,  33.,   66.,   99.,   132.,
      199.,  266.,  102.,  136.,  205.,  274.,  105.,  140.,  211.,  282.,
      108.,  144.,  231.,  264.,  297.,  330.,  601.,  668.,  306.,  340.,
      619.,  688.,  315.,  350.,  637.,  708.,  324.,  360.,  466.,  536.,
      606.,  676.,  1226., 1368., 624.,  696.,  1262., 1408., 642.,  716.,
      1298., 1448., 660.,  736.,  259.,  296.,  333.,  370.,  673.,  748.,
      342.,  380.,  691.,  768.,  351.,  390.,  709.,  788.,  360.,  400.,
      522.,  600.,  678.,  756.,  1370., 1528., 696.,  776.,  1406., 1568.,
      714.,  796.,  1442., 1608., 732.,  816.,  287.,  328.,  369.,  410.,
      745.,  828.,  378.,  420.,  763.,  848.,  387.,  430.,  781.,  868.,
      396.,  440.,  578.,  664.,  750.,  836.,  1514., 1688., 768.,  856.,
      1550., 1728., 786.,  876.,  1586., 1768., 804.,  896.,  315.,  360.,
      405.,  450.,  817.,  908.,  414.,  460.,  835.,  928.,  423.,  470.,
      853.,  948.,  432.,  480.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   3.,   4.,   7.,   10.,  6.,   8.,   13.,  18.,  9.,   12.,
      15.,  18.,  0.,   0.,   7.,   8.,   9.,   10.,  25.,  28.,  18.,  20.,
      43.,  48.,  27.,  30.,  33.,  36.,  0.,   0.,   17.,  22.,  27.,  32.,
      68.,  80.,  45.,  52.,  104., 120., 63.,  72.,  81.,  90.,  0.,   0.,
      28.,  32.,  36.,  40.,  79.,  88.,  45.,  50.,  97.,  108., 54.,  60.,
      66.,  72.,  0.,   0.,   59.,  70.,  81.,  92.,  176., 200., 99.,  112.,
      212., 240., 117., 132., 147., 162., 0.,   0.,   49.,  56.,  63.,  70.,
      133., 148., 72.,  80.,  151., 168., 81.,  90.,  99.,  108., 0.,   0.,
      91.,  98.,  105., 112., 223., 238., 120., 128., 253., 270., 135., 144.,
      153., 162., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   10.,  20.,  30.,  40.,
      61.,  82.,  33.,  44.,  67.,  90.,  36.,  48.,  60.,  72.,  0.,   0.,
      70.,  80.,  90.,  100., 187., 208., 99.,  110., 205., 228., 108., 120.,
      132., 144., 0.,   0.,   143., 166., 189., 212., 392., 440., 207., 232.,
      428., 480., 225., 252., 279., 306., 0.,   0.,   91.,  104., 117., 130.,
      241., 268., 126., 140., 259., 288., 135., 150., 165., 180., 0.,   0.,
      185., 214., 243., 272., 500., 560., 261., 292., 536., 600., 279., 312.,
      345., 378., 0.,   0.,   112., 128., 144., 160., 295., 328., 153., 170.,
      313., 348., 162., 180., 198., 216., 0.,   0.,   208., 224., 240., 256.,
      493., 526., 255., 272., 523., 558., 270., 288., 306., 324., 0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   19.,  38.,  57.,  76.,  115., 154., 60.,  80.,
      121., 162., 63.,  84.,  105., 126., 0.,   0.,   133., 152., 171., 190.,
      349., 388., 180., 200., 367., 408., 189., 210., 231., 252., 0.,   0.,
      269., 310., 351., 392., 716., 800., 369., 412., 752., 840., 387., 432.,
      477., 522., 0.,   0.,   154., 176., 198., 220., 403., 448., 207., 230.,
      421., 468., 216., 240., 264., 288., 0.,   0.,   311., 358., 405., 452.,
      824., 920., 423., 472., 860., 960., 441., 492., 543., 594., 0.,   0.,
      175., 200., 225., 250., 457., 508., 234., 260., 475., 528., 243., 270.,
      297., 324., 0.,   0.,   325., 350., 375., 400., 763., 814., 390., 416.,
      793., 846., 405., 432., 459., 486., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,   23.,    40.,    60.,    39.,    53.,   84.,
      120.,   61.,    83.,   128.,   180.,   83.,    113.,   41.,   47.,
      53.,    59.,    160.,  180.,   123.,   137.,   300.,   336.,  193.,
      215.,   440.,   492.,  263.,   293.,   106.,   150.,   194.,  238.,
      496.,   600.,   334.,  394.,   776.,   912.,   474.,   550.,  1056.,
      1224.,  614.,   706.,  257.,   295.,   333.,   371.,   720.,  804.,
      403.,   449.,   860.,  960.,   473.,   527.,   1000.,  1116., 543.,
      605.,   538.,   646.,  754.,   862.,   1616.,  1848.,  894.,  1018.,
      1896.,  2160.,  1034., 1174.,  2176.,  2472.,  1174.,  1330., 473.,
      543.,   613.,   683.,  1280.,  1428.,  683.,   761.,   1420., 1584.,
      753.,   839.,   1560., 1740.,  823.,   917.,   970.,   1142., 1314.,
      1486.,  2736.,  3096., 1454.,  1642.,  3016.,  3408.,  1594., 1798.,
      3296.,  3720.,  1734., 1954.,  689.,   791.,   893.,   995.,  1840.,
      2052.,  963.,   1073., 1980.,  2208.,  1033.,  1151.,  2120., 2364.,
      1103.,  1229.,  101.,  235.,   369.,   503.,   744.,   1020., 391.,
      533.,   788.,   1080., 413.,   563.,   832.,   1140.,  435.,  593.,
      905.,   1039.,  1173., 1307.,  2400.,  2676.,  1243.,  1385., 2540.,
      2832.,  1313.,  1463., 2680.,  2988.,  1383.,  1541.,  1834., 2134.,
      2434.,  2734.,  4976., 5592.,  2574.,  2890.,  5256.,  5904., 2714.,
      3046.,  5536.,  6216., 2854.,  3202.,  1121.,  1287.,  1453., 1619.,
      2960.,  3300.,  1523., 1697.,  3100.,  3456.,  1593.,  1775., 3240.,
      3612.,  1663.,  1853., 2266.,  2630.,  2994.,  3358.,  6096., 6840.,
      3134.,  3514.,  6376., 7152.,  3274.,  3670.,  6656.,  7464., 3414.,
      3826.,  1337.,  1535., 1733.,  1931.,  3520.,  3924.,  1803., 2009.,
      3660.,  4080.,  1873., 2087.,  3800.,  4236.,  1943.,  2165., 2698.,
      3126.,  3554.,  3982., 7216.,  8088.,  3694.,  4138.,  7496., 8400.,
      3834.,  4294.,  7776., 8712.,  3974.,  4450.,  1553.,  1783., 2013.,
      2243.,  4080.,  4548., 2083.,  2321.,  4220.,  4704.,  2153., 2399.,
      4360.,  4860.,  2223., 2477.,  197.,   459.,   721.,   983.,  1448.,
      1980.,  743.,   1013., 1492.,  2040.,  765.,   1043.,  1536., 2100.,
      787.,   1073.,  1769., 2031.,  2293.,  2555.,  4640.,  5172., 2363.,
      2633.,  4780.,  5328., 2433.,  2711.,  4920.,  5484.,  2503., 2789.,
      3562.,  4118.,  4674., 5230.,  9456.,  10584., 4814.,  5386., 9736.,
      10896., 4954.,  5542., 10016., 11208., 5094.,  5698.,  1985., 2279.,
      2573.,  2867.,  5200., 5796.,  2643.,  2945.,  5340.,  5952., 2713.,
      3023.,  5480.,  6108., 2783.,  3101.,  3994.,  4614.,  5234., 5854.,
      10576., 11832., 5374., 6010.,  10856., 12144., 5514.,  6166., 11136.,
      12456., 5654.,  6322., 2201.,  2527.,  2853.,  3179.,  5760., 6420.,
      2923.,  3257.,  5900., 6576.,  2993.,  3335.,  6040.,  6732., 3063.,
      3413.,  4426.,  5110., 5794.,  6478.,  11696., 13080., 5934., 6634.,
      11976., 13392., 6074., 6790.,  12256., 13704., 6214.,  6946., 2417.,
      2775.,  3133.,  3491., 6320.,  7044.,  3203.,  3569.,  6460., 7200.,
      3273.,  3647.,  6600., 7356.,  3343.,  3725.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   17.,   23.,   40.,   60.,   39.,   53.,   84.,   120.,
      61.,   83.,   105.,  127.,  0.,    0.,    41.,   47.,   53.,   59.,
      160.,  180.,  123.,  137.,  300.,  336.,  193.,  215.,  237.,  259.,
      0.,    0.,    100.,  136.,  172.,  208.,  452.,  540.,  312.,  364.,
      732.,  852.,  452.,  520.,  588.,  656.,  0.,    0.,    203.,  233.,
      263.,  293.,  580.,  648.,  333.,  371.,  720.,  804.,  403.,  449.,
      495.,  541.,  0.,    0.,    424.,  508.,  592.,  676.,  1292., 1476.,
      732.,  832.,  1572., 1788., 872.,  988.,  1104., 1220., 0.,    0.,
      365.,  419.,  473.,  527.,  1000., 1116., 543.,  605.,  1140., 1272.,
      613.,  683.,  753.,  823.,  0.,    0.,    689.,  743.,  797.,  851.,
      1696., 1812., 915.,  977.,  1932., 2064., 1033., 1103., 1173., 1243.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    59.,   137.,
      215.,  293.,  436.,  600.,  237.,  323.,  480.,  660.,  259.,  353.,
      447.,  541.,  0.,    0.,    527.,  605.,  683.,  761.,  1420., 1584.,
      753.,  839.,  1560., 1740., 823.,  917.,  1011., 1105., 0.,    0.,
      1072., 1252., 1432., 1612., 2972., 3348., 1572., 1768., 3252., 3660.,
      1712., 1924., 2136., 2348., 0.,    0.,    689.,  791.,  893.,  995.,
      1840., 2052., 963.,  1073., 1980., 2208., 1033., 1151., 1269., 1387.,
      0.,    0.,    1396., 1624., 1852., 2080., 3812., 4284., 1992., 2236.,
      4092., 4596., 2132., 2392., 2652., 2912., 0.,    0.,    851.,  977.,
      1103., 1229., 2260., 2520., 1173., 1307., 2400., 2676., 1243., 1385.,
      1527., 1669., 0.,    0.,    1607., 1733., 1859., 1985., 3820., 4080.,
      1977., 2111., 4056., 4332., 2095., 2237., 2379., 2521., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    113.,  263.,  413.,  563.,
      832.,  1140., 435.,  593.,  876.,  1200., 457.,  623.,  789.,  955.,
      0.,    0.,    1013., 1163., 1313., 1463., 2680., 2988., 1383., 1541.,
      2820., 3144., 1453., 1619., 1785., 1951., 0.,    0.,    2044., 2368.,
      2692., 3016., 5492., 6156., 2832., 3172., 5772., 6468., 2972., 3328.,
      3684., 4040., 0.,    0.,    1175., 1349., 1523., 1697., 3100., 3456.,
      1593., 1775., 3240., 3612., 1663., 1853., 2043., 2233., 0.,    0.,
      2368., 2740., 3112., 3484., 6332., 7092., 3252., 3640., 6612., 7404.,
      3392., 3796., 4200., 4604., 0.,    0.,    1337., 1535., 1733., 1931.,
      3520., 3924., 1803., 2009., 3660., 4080., 1873., 2087., 2301., 2515.,
      0.,    0.,    2525., 2723., 2921., 3119., 5944., 6348., 3039., 3245.,
      6180., 6600., 3157., 3371., 3585., 3799., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,     110.,   150.,   260.,   404.,    278.,    382.,   596.,
      868.,   446.,    614.,   932.,   1332.,  614.,    846.,    270.,   310.,
      350.,   390.,    1124.,  1268.,  902.,   1006.,   2228.,   2500.,  1454.,
      1622.,  3332.,   3732.,  2006.,  2238.,  700.,    1036.,   1372.,  1708.,
      3592.,  4392.,   2476.,  2940.,  5800.,  6856.,   3580.,   4172.,  8008.,
      9320.,  4684.,   5404.,  1966.,  2262.,  2558.,   2854.,   5540.,  6196.,
      3110.,  3470.,   6644.,  7428.,  3662.,  4086.,   7748.,   8660.,  4214.,
      4702.,  4092.,   4940.,  5788.,  6636.,  12424.,  14248.,  6892.,  7868.,
      14632., 16712.,  7996.,  9100.,  16840., 19176.,  9100.,   10332., 3662.,
      4214.,  4766.,   5318.,  9956.,  11124., 5318.,   5934.,   11060., 12356.,
      5870.,  6550.,   12164., 13588., 6422.,  7166.,   7484.,   8844.,  10204.,
      11564., 21256.,  24104., 11308., 12796., 23464.,  26568.,  12412., 14028.,
      25672., 29032.,  13516., 15260., 5358.,  6166.,   6974.,   7782.,  14372.,
      16052., 7526.,   8398.,  15476., 17284., 8078.,   9014.,   16580., 18516.,
      8630.,  9630.,   670.,   1734.,  2798.,  3862.,   5636.,   7828.,  2966.,
      4094.,  5972.,   8292.,  3134.,  4326.,  6308.,   8756.,   3302.,  4558.,
      7054.,  8118.,   9182.,  10246., 18788., 20980.,  9734.,   10862., 19892.,
      22212., 10286.,  11478., 20996., 23444., 10838.,  12094.,  14268., 16652.,
      19036., 21420.,  38920., 43816., 20140., 22652.,  41128.,  46280., 21244.,
      23884., 43336.,  48744., 22348., 25116., 8750.,   10070.,  11390., 12710.,
      23204., 25908.,  11942., 13326., 24308., 27140.,  12494.,  13942., 25412.,
      28372., 13046.,  14558., 17660., 20556., 23452.,  26348.,  47752., 53672.,
      24556., 27580.,  49960., 56136., 25660., 28812.,  52168.,  58600., 26764.,
      30044., 10446.,  12022., 13598., 15174., 27620.,  30836.,  14150., 15790.,
      28724., 32068.,  14702., 16406., 29828., 33300.,  15254.,  17022., 21052.,
      24460., 27868.,  31276., 56584., 63528., 28972.,  32508.,  58792., 65992.,
      30076., 33740.,  61000., 68456., 31180., 34972.,  12142.,  13974., 15806.,
      17638., 32036.,  35764., 16358., 18254., 33140.,  36996.,  16910., 18870.,
      34244., 38228.,  17462., 19486., 1310.,  3398.,   5486.,   7574.,  11012.,
      15252., 5654.,   7806.,  11348., 15716., 5822.,   8038.,   11684., 16180.,
      5990.,  8270.,   13838., 15926., 18014., 20102.,  36452.,  40692., 18566.,
      20718., 37556.,  41924., 19118., 21334., 38660.,  43156.,  19670., 21950.,
      27836., 32268.,  36700., 41132., 74248., 83240.,  37804.,  42364., 76456.,
      85704., 38908.,  43596., 78664., 88168., 40012.,  44828.,  15534., 17878.,
      20222., 22566.,  40868., 45620., 20774., 23182.,  41972.,  46852., 21326.,
      23798., 43076.,  48084., 21878., 24414., 31228.,  36172.,  41116., 46060.,
      83080., 93096.,  42220., 47292., 85288., 95560.,  43324.,  48524., 87496.,
      98024., 44428.,  49756., 17230., 19830., 22430.,  25030.,  45284., 50548.,
      22982., 25646.,  46388., 51780., 23534., 26262.,  47492.,  53012., 24086.,
      26878., 34620.,  40076., 45532., 50988., 91912.,  102952., 46636., 52220.,
      94120., 105416., 47740., 53452., 96328., 107880., 48844.,  54684., 18926.,
      21782., 24638.,  27494., 49700., 55476., 25190.,  28110.,  50804., 56708.,
      25742., 28726.,  51908., 57940., 26294., 29342.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    110.,   150.,   260.,   404.,   278.,   382.,   596.,
      868.,   446.,   614.,   782.,   950.,   0.,     0.,     270.,   310.,
      350.,   390.,   1124.,  1268.,  902.,   1006.,  2228.,  2500.,  1454.,
      1622.,  1790.,  1958.,  0.,     0.,     660.,   932.,   1204.,  1476.,
      3256.,  3928.,  2308.,  2708.,  5464.,  6392.,  3412.,  3940.,  4468.,
      4996.,  0.,     0.,     1542.,  1774.,  2006.,  2238.,  4436.,  4964.,
      2558.,  2854.,  5540.,  6196.,  3110.,  3470.,  3830.,  4190.,  0.,
      0.,     3204.,  3860.,  4516.,  5172.,  9880.,  11320., 5620.,  6404.,
      12088., 13784., 6724.,  7636.,  8548.,  9460.,  0.,     0.,     2814.,
      3238.,  3662.,  4086.,  7748.,  8660.,  4214.,  4702.,  8852.,  9892.,
      4766.,  5318.,  5870.,  6422.,  0.,     0.,     5358.,  5782.,  6206.,
      6630.,  13220., 14132., 7142.,  7630.,  15092., 16132., 8078.,  8630.,
      9182.,  9734.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     390.,   1006.,  1622.,  2238.,  3284.,  4580.,  1790.,
      2470.,  3620.,  5044.,  1958.,  2702.,  3446.,  4190.,  0.,     0.,
      4086.,  4702.,  5318.,  5934.,  11060., 12356., 5870.,  6550.,  12164.,
      13588., 6422.,  7166.,  7910.,  8654.,  0.,     0.,     8292.,  9716.,
      11140., 12564., 23128., 26104., 12244., 13796., 25336., 28568., 13348.,
      15028., 16708., 18388., 0.,     0.,     5358.,  6166.,  6974.,  7782.,
      14372., 16052., 7526.,  8398.,  15476., 17284., 8078.,  9014.,  9950.,
      10886., 0.,     0.,     10836., 12644., 14452., 16260., 29752., 33496.,
      15556., 17492., 31960., 35960., 16660., 18724., 20788., 22852., 0.,
      0.,     6630.,  7630.,  8630.,  9630.,  17684., 19748., 9182.,  10246.,
      18788., 20980., 9734.,  10862., 11990., 13118., 0.,     0.,     12630.,
      13630., 14630., 15630., 30068., 32132., 15566., 16630., 31940., 34132.,
      16502., 17630., 18758., 19886., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     750.,   1942.,  3134.,  4326.,  6308.,
      8756.,  3302.,  4558.,  6644.,  9220.,  3470.,  4790.,  6110.,  7430.,
      0.,     0.,     7902.,  9094.,  10286., 11478., 20996., 23444., 10838.,
      12094., 22100., 24676., 11390., 12710., 14030., 15350., 0.,     0.,
      15924., 18500., 21076., 23652., 43000., 48280., 22180., 24884., 45208.,
      50744., 23284., 26116., 28948., 31780., 0.,     0.,     9174.,  10558.,
      11942., 13326., 24308., 27140., 12494., 13942., 25412., 28372., 13046.,
      14558., 16070., 17582., 0.,     0.,     18468., 21428., 24388., 27348.,
      49624., 55672., 25492., 28580., 51832., 58136., 26596., 29812., 33028.,
      36244., 0.,     0.,     10446., 12022., 13598., 15174., 27620., 30836.,
      14150., 15790., 28724., 32068., 14702., 16406., 18110., 19814., 0.,
      0.,     19902., 21478., 23054., 24630., 46916., 50132., 23990., 25630.,
      48788., 52132., 24926., 26630., 28334., 30038., 0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    5.,    6.,    7.,    8.,    11.,   14.,
      17.,   20.,   10.,   12.,   14.,   16.,   21.,   26.,   31.,   36.,
      15.,   18.,   21.,   24.,   31.,   38.,   45.,   52.,   20.,   24.,
      28.,   32.,   13.,   14.,   15.,   16.,   17.,   18.,   19.,   20.,
      47.,   50.,   53.,   56.,   34.,   36.,   38.,   40.,   81.,   86.,
      91.,   96.,   51.,   54.,   57.,   60.,   115.,  122.,  129.,  136.,
      68.,   72.,   76.,   80.,   30.,   36.,   42.,   48.,   54.,   60.,
      66.,   72.,   134.,  148.,  162.,  176.,  88.,   96.,   104.,  112.,
      202.,  220.,  238.,  256.,  122.,  132.,  142.,  152.,  270.,  292.,
      314.,  336.,  156.,  168.,  180.,  192.,  65.,   70.,   75.,   80.,
      85.,   90.,   95.,   100.,  183.,  194.,  205.,  216.,  102.,  108.,
      114.,  120.,  217.,  230.,  243.,  256.,  119.,  126.,  133.,  140.,
      251.,  266.,  281.,  296.,  136.,  144.,  152.,  160.,  134.,  148.,
      162.,  176.,  190.,  204.,  218.,  232.,  406.,  436.,  466.,  496.,
      224.,  240.,  256.,  272.,  474.,  508.,  542.,  576.,  258.,  276.,
      294.,  312.,  542.,  580.,  618.,  656.,  292.,  312.,  332.,  352.,
      117.,  126.,  135.,  144.,  153.,  162.,  171.,  180.,  319.,  338.,
      357.,  376.,  170.,  180.,  190.,  200.,  353.,  374.,  395.,  416.,
      187.,  198.,  209.,  220.,  387.,  410.,  433.,  456.,  204.,  216.,
      228.,  240.,  238.,  260.,  282.,  304.,  326.,  348.,  370.,  392.,
      678.,  724.,  770.,  816.,  360.,  384.,  408.,  432.,  746.,  796.,
      846.,  896.,  394.,  420.,  446.,  472.,  814.,  868.,  922.,  976.,
      428.,  456.,  484.,  512.,  169.,  182.,  195.,  208.,  221.,  234.,
      247.,  260.,  455.,  482.,  509.,  536.,  238.,  252.,  266.,  280.,
      489.,  518.,  547.,  576.,  255.,  270.,  285.,  300.,  523.,  554.,
      585.,  616.,  272.,  288.,  304.,  320.,  17.,   34.,   51.,   68.,
      85.,   102.,  119.,  136.,  171.,  206.,  241.,  276.,  90.,   108.,
      126.,  144.,  181.,  218.,  255.,  292.,  95.,   114.,  133.,  152.,
      191.,  230.,  269.,  308.,  100.,  120.,  140.,  160.,  221.,  238.,
      255.,  272.,  289.,  306.,  323.,  340.,  591.,  626.,  661.,  696.,
      306.,  324.,  342.,  360.,  625.,  662.,  699.,  736.,  323.,  342.,
      361.,  380.,  659.,  698.,  737.,  776.,  340.,  360.,  380.,  400.,
      446.,  484.,  522.,  560.,  598.,  636.,  674.,  712.,  1222., 1300.,
      1378., 1456., 632.,  672.,  712.,  752.,  1290., 1372., 1454., 1536.,
      666.,  708.,  750.,  792.,  1358., 1444., 1530., 1616., 700.,  744.,
      788.,  832.,  273.,  294.,  315.,  336.,  357.,  378.,  399.,  420.,
      727.,  770.,  813.,  856.,  374.,  396.,  418.,  440.,  761.,  806.,
      851.,  896.,  391.,  414.,  437.,  460.,  795.,  842.,  889.,  936.,
      408.,  432.,  456.,  480.,  550.,  596.,  642.,  688.,  734.,  780.,
      826.,  872.,  1494., 1588., 1682., 1776., 768.,  816.,  864.,  912.,
      1562., 1660., 1758., 1856., 802.,  852.,  902.,  952.,  1630., 1732.,
      1834., 1936., 836.,  888.,  940.,  992.,  325.,  350.,  375.,  400.,
      425.,  450.,  475.,  500.,  863.,  914.,  965.,  1016., 442.,  468.,
      494.,  520.,  897.,  950.,  1003., 1056., 459.,  486.,  513.,  540.,
      931.,  986.,  1041., 1096., 476.,  504.,  532.,  560.,  654.,  708.,
      762.,  816.,  870.,  924.,  978.,  1032., 1766., 1876., 1986., 2096.,
      904.,  960.,  1016., 1072., 1834., 1948., 2062., 2176., 938.,  996.,
      1054., 1112., 1902., 2020., 2138., 2256., 972.,  1032., 1092., 1152.,
      377.,  406.,  435.,  464.,  493.,  522.,  551.,  580.,  999.,  1058.,
      1117., 1176., 510.,  540.,  570.,  600.,  1033., 1094., 1155., 1216.,
      527.,  558.,  589.,  620.,  1067., 1130., 1193., 1256., 544.,  576.,
      608.,  640.,  33.,   66.,   99.,   132.,  165.,  198.,  231.,  264.,
      331.,  398.,  465.,  532.,  170.,  204.,  238.,  272.,  341.,  410.,
      479.,  548.,  175.,  210.,  245.,  280.,  351.,  422.,  493.,  564.,
      180.,  216.,  252.,  288.,  429.,  462.,  495.,  528.,  561.,  594.,
      627.,  660.,  1135., 1202., 1269., 1336., 578.,  612.,  646.,  680.,
      1169., 1238., 1307., 1376., 595.,  630.,  665.,  700.,  1203., 1274.,
      1345., 1416., 612.,  648.,  684.,  720.,  862.,  932.,  1002., 1072.,
      1142., 1212., 1282., 1352., 2310., 2452., 2594., 2736., 1176., 1248.,
      1320., 1392., 2378., 2524., 2670., 2816., 1210., 1284., 1358., 1432.,
      2446., 2596., 2746., 2896., 1244., 1320., 1396., 1472., 481.,  518.,
      555.,  592.,  629.,  666.,  703.,  740.,  1271., 1346., 1421., 1496.,
      646.,  684.,  722.,  760.,  1305., 1382., 1459., 1536., 663.,  702.,
      741.,  780.,  1339., 1418., 1497., 1576., 680.,  720.,  760.,  800.,
      966.,  1044., 1122., 1200., 1278., 1356., 1434., 1512., 2582., 2740.,
      2898., 3056., 1312., 1392., 1472., 1552., 2650., 2812., 2974., 3136.,
      1346., 1428., 1510., 1592., 2718., 2884., 3050., 3216., 1380., 1464.,
      1548., 1632., 533.,  574.,  615.,  656.,  697.,  738.,  779.,  820.,
      1407., 1490., 1573., 1656., 714.,  756.,  798.,  840.,  1441., 1526.,
      1611., 1696., 731.,  774.,  817.,  860.,  1475., 1562., 1649., 1736.,
      748.,  792.,  836.,  880.,  1070., 1156., 1242., 1328., 1414., 1500.,
      1586., 1672., 2854., 3028., 3202., 3376., 1448., 1536., 1624., 1712.,
      2922., 3100., 3278., 3456., 1482., 1572., 1662., 1752., 2990., 3172.,
      3354., 3536., 1516., 1608., 1700., 1792., 585.,  630.,  675.,  720.,
      765.,  810.,  855.,  900.,  1543., 1634., 1725., 1816., 782.,  828.,
      874.,  920.,  1577., 1670., 1763., 1856., 799.,  846.,  893.,  940.,
      1611., 1706., 1801., 1896., 816.,  864.,  912.,  960.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    2.,    3.,    4.,    5.,    6.,    7.,    8.,    11.,   14.,
      17.,   20.,   10.,   12.,   14.,   16.,   21.,   26.,   31.,   36.,
      15.,   18.,   21.,   24.,   27.,   30.,   33.,   36.,   0.,    0.,
      0.,    0.,    13.,   14.,   15.,   16.,   17.,   18.,   19.,   20.,
      47.,   50.,   53.,   56.,   34.,   36.,   38.,   40.,   81.,   86.,
      91.,   96.,   51.,   54.,   57.,   60.,   63.,   66.,   69.,   72.,
      0.,    0.,    0.,    0.,    29.,   34.,   39.,   44.,   49.,   54.,
      59.,   64.,   124.,  136.,  148.,  160.,  83.,   90.,   97.,   104.,
      192.,  208.,  224.,  240.,  117.,  126.,  135.,  144.,  153.,  162.,
      171.,  180.,  0.,    0.,    0.,    0.,    52.,   56.,   60.,   64.,
      68.,   72.,   76.,   80.,   149.,  158.,  167.,  176.,  85.,   90.,
      95.,   100.,  183.,  194.,  205.,  216.,  102.,  108.,  114.,  120.,
      126.,  132.,  138.,  144.,  0.,    0.,    0.,    0.,    107.,  118.,
      129.,  140.,  151.,  162.,  173.,  184.,  328.,  352.,  376.,  400.,
      185.,  198.,  211.,  224.,  396.,  424.,  452.,  480.,  219.,  234.,
      249.,  264.,  279.,  294.,  309.,  324.,  0.,    0.,    0.,    0.,
      91.,   98.,   105.,  112.,  119.,  126.,  133.,  140.,  251.,  266.,
      281.,  296.,  136.,  144.,  152.,  160.,  285.,  302.,  319.,  336.,
      153.,  162.,  171.,  180.,  189.,  198.,  207.,  216.,  0.,    0.,
      0.,    0.,    175.,  182.,  189.,  196.,  203.,  210.,  217.,  224.,
      431.,  446.,  461.,  476.,  232.,  240.,  248.,  256.,  489.,  506.,
      523.,  540.,  261.,  270.,  279.,  288.,  297.,  306.,  315.,  324.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    10.,   20.,   30.,   40.,
      50.,   60.,   70.,   80.,   101.,  122.,  143.,  164.,  55.,   66.,
      77.,   88.,   111.,  134.,  157.,  180.,  60.,   72.,   84.,   96.,
      108.,  120.,  132.,  144.,  0.,    0.,    0.,    0.,    130.,  140.,
      150.,  160.,  170.,  180.,  190.,  200.,  353.,  374.,  395.,  416.,
      187.,  198.,  209.,  220.,  387.,  410.,  433.,  456.,  204.,  216.,
      228.,  240.,  252.,  264.,  276.,  288.,  0.,    0.,    0.,    0.,
      263.,  286.,  309.,  332.,  355.,  378.,  401.,  424.,  736.,  784.,
      832.,  880.,  389.,  414.,  439.,  464.,  804.,  856.,  908.,  960.,
      423.,  450.,  477.,  504.,  531.,  558.,  585.,  612.,  0.,    0.,
      0.,    0.,    169.,  182.,  195.,  208.,  221.,  234.,  247.,  260.,
      455.,  482.,  509.,  536.,  238.,  252.,  266.,  280.,  489.,  518.,
      547.,  576.,  255.,  270.,  285.,  300.,  315.,  330.,  345.,  360.,
      0.,    0.,    0.,    0.,    341.,  370.,  399.,  428.,  457.,  486.,
      515.,  544.,  940.,  1000., 1060., 1120., 491.,  522.,  553.,  584.,
      1008., 1072., 1136., 1200., 525.,  558.,  591.,  624.,  657.,  690.,
      723.,  756.,  0.,    0.,    0.,    0.,    208.,  224.,  240.,  256.,
      272.,  288.,  304.,  320.,  557.,  590.,  623.,  656.,  289.,  306.,
      323.,  340.,  591.,  626.,  661.,  696.,  306.,  324.,  342.,  360.,
      378.,  396.,  414.,  432.,  0.,    0.,    0.,    0.,    400.,  416.,
      432.,  448.,  464.,  480.,  496.,  512.,  953.,  986.,  1019., 1052.,
      493.,  510.,  527.,  544.,  1011., 1046., 1081., 1116., 522.,  540.,
      558.,  576.,  594.,  612.,  630.,  648.,  0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    19.,   38.,   57.,   76.,   95.,   114.,  133.,  152.,
      191.,  230.,  269.,  308.,  100.,  120.,  140.,  160.,  201.,  242.,
      283.,  324.,  105.,  126.,  147.,  168.,  189.,  210.,  231.,  252.,
      0.,    0.,    0.,    0.,    247.,  266.,  285.,  304.,  323.,  342.,
      361.,  380.,  659.,  698.,  737.,  776.,  340.,  360.,  380.,  400.,
      693.,  734.,  775.,  816.,  357.,  378.,  399.,  420.,  441.,  462.,
      483.,  504.,  0.,    0.,    0.,    0.,    497.,  538.,  579.,  620.,
      661.,  702.,  743.,  784.,  1348., 1432., 1516., 1600., 695.,  738.,
      781.,  824.,  1416., 1504., 1592., 1680., 729.,  774.,  819.,  864.,
      909.,  954.,  999.,  1044., 0.,    0.,    0.,    0.,    286.,  308.,
      330.,  352.,  374.,  396.,  418.,  440.,  761.,  806.,  851.,  896.,
      391.,  414.,  437.,  460.,  795.,  842.,  889.,  936.,  408.,  432.,
      456.,  480.,  504.,  528.,  552.,  576.,  0.,    0.,    0.,    0.,
      575.,  622.,  669.,  716.,  763.,  810.,  857.,  904.,  1552., 1648.,
      1744., 1840., 797.,  846.,  895.,  944.,  1620., 1720., 1820., 1920.,
      831.,  882.,  933.,  984.,  1035., 1086., 1137., 1188., 0.,    0.,
      0.,    0.,    325.,  350.,  375.,  400.,  425.,  450.,  475.,  500.,
      863.,  914.,  965.,  1016., 442.,  468.,  494.,  520.,  897.,  950.,
      1003., 1056., 459.,  486.,  513.,  540.,  567.,  594.,  621.,  648.,
      0.,    0.,    0.,    0.,    625.,  650.,  675.,  700.,  725.,  750.,
      775.,  800.,  1475., 1526., 1577., 1628., 754.,  780.,  806.,  832.,
      1533., 1586., 1639., 1692., 783.,  810.,  837.,  864.,  891.,  918.,
      945.,  972.,  0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    29.,    35.,    41.,    47.,    64.,
      84.,    104.,   124.,   67.,    81.,    95.,    109.,   140.,   176.,
      212.,   248.,   105.,   127.,   149.,   171.,   216.,   268.,   320.,
      372.,   143.,   173.,   203.,   233.,   77.,    83.,    89.,    95.,
      101.,   107.,   113.,   119.,   304.,   324.,   344.,   364.,   235.,
      249.,   263.,   277.,   572.,   608.,   644.,   680.,   369.,   391.,
      413.,   435.,   840.,   892.,   944.,   996.,   503.,   533.,   563.,
      593.,   178.,   222.,   266.,   310.,   354.,   398.,   442.,   486.,
      912.,   1016.,  1120.,  1224.,  622.,   682.,   742.,   802.,   1448.,
      1584.,  1720.,  1856.,  890.,   966.,   1042.,  1118.,  1984.,  2152.,
      2320.,  2488.,  1158.,  1250.,  1342.,  1434.,  485.,   523.,   561.,
      599.,   637.,   675.,   713.,   751.,   1376.,  1460.,  1544.,  1628.,
      771.,   817.,   863.,   909.,   1644.,  1744.,  1844.,  1944.,  905.,
      959.,   1013.,  1067.,  1912.,  2028.,  2144.,  2260.,  1039.,  1101.,
      1163.,  1225.,  994.,   1102.,  1210.,  1318.,  1426.,  1534.,  1642.,
      1750.,  3056.,  3288.,  3520.,  3752.,  1694.,  1818.,  1942.,  2066.,
      3592.,  3856.,  4120.,  4384.,  1962.,  2102.,  2242.,  2382.,  4128.,
      4424.,  4720.,  5016.,  2230.,  2386.,  2542.,  2698.,  893.,   963.,
      1033.,  1103.,  1173.,  1243.,  1313.,  1383.,  2448.,  2596.,  2744.,
      2892.,  1307.,  1385.,  1463.,  1541.,  2716.,  2880.,  3044.,  3208.,
      1441.,  1527.,  1613.,  1699.,  2984.,  3164.,  3344.,  3524.,  1575.,
      1669.,  1763.,  1857.,  1810.,  1982.,  2154.,  2326.,  2498.,  2670.,
      2842.,  3014.,  5200.,  5560.,  5920.,  6280.,  2766.,  2954.,  3142.,
      3330.,  5736.,  6128.,  6520.,  6912.,  3034.,  3238.,  3442.,  3646.,
      6272.,  6696.,  7120.,  7544.,  3302.,  3522.,  3742.,  3962.,  1301.,
      1403.,  1505.,  1607.,  1709.,  1811.,  1913.,  2015.,  3520.,  3732.,
      3944.,  4156.,  1843.,  1953.,  2063.,  2173.,  3788.,  4016.,  4244.,
      4472.,  1977.,  2095.,  2213.,  2331.,  4056.,  4300.,  4544.,  4788.,
      2111.,  2237.,  2363.,  2489.,  101.,   235.,   369.,   503.,   637.,
      771.,   905.,   1039.,  1280.,  1556.,  1832.,  2108.,  675.,   817.,
      959.,   1101.,  1356.,  1648.,  1940.,  2232.,  713.,   863.,   1013.,
      1163.,  1432.,  1740.,  2048.,  2356.,  751.,   909.,   1067.,  1225.,
      1709.,  1843.,  1977.,  2111.,  2245.,  2379.,  2513.,  2647.,  4592.,
      4868.,  5144.,  5420.,  2379.,  2521.,  2663.,  2805.,  4860.,  5152.,
      5444.,  5736.,  2513.,  2663.,  2813.,  2963.,  5128.,  5436.,  5744.,
      6052.,  2647.,  2805.,  2963.,  3121.,  3442.,  3742.,  4042.,  4342.,
      4642.,  4942.,  5242.,  5542.,  9488.,  10104., 10720., 11336., 4910.,
      5226.,  5542.,  5858.,  10024., 10672., 11320., 11968., 5178.,  5510.,
      5842.,  6174.,  10560., 11240., 11920., 12600., 5446.,  5794.,  6142.,
      6490.,  2117.,  2283.,  2449.,  2615.,  2781.,  2947.,  3113.,  3279.,
      5664.,  6004.,  6344.,  6684.,  2915.,  3089.,  3263.,  3437.,  5932.,
      6288.,  6644.,  7000.,  3049.,  3231.,  3413.,  3595.,  6200.,  6572.,
      6944.,  7316.,  3183.,  3373.,  3563.,  3753.,  4258.,  4622.,  4986.,
      5350.,  5714.,  6078.,  6442.,  6806.,  11632., 12376., 13120., 13864.,
      5982.,  6362.,  6742.,  7122.,  12168., 12944., 13720., 14496., 6250.,
      6646.,  7042.,  7438.,  12704., 13512., 14320., 15128., 6518.,  6930.,
      7342.,  7754.,  2525.,  2723.,  2921.,  3119.,  3317.,  3515.,  3713.,
      3911.,  6736.,  7140.,  7544.,  7948.,  3451.,  3657.,  3863.,  4069.,
      7004.,  7424.,  7844.,  8264.,  3585.,  3799.,  4013.,  4227.,  7272.,
      7708.,  8144.,  8580.,  3719.,  3941.,  4163.,  4385.,  5074.,  5502.,
      5930.,  6358.,  6786.,  7214.,  7642.,  8070.,  13776., 14648., 15520.,
      16392., 7054.,  7498.,  7942.,  8386.,  14312., 15216., 16120., 17024.,
      7322.,  7782.,  8242.,  8702.,  14848., 15784., 16720., 17656., 7590.,
      8066.,  8542.,  9018.,  2933.,  3163.,  3393.,  3623.,  3853.,  4083.,
      4313.,  4543.,  7808.,  8276.,  8744.,  9212.,  3987.,  4225.,  4463.,
      4701.,  8076.,  8560.,  9044.,  9528.,  4121.,  4367.,  4613.,  4859.,
      8344.,  8844.,  9344.,  9844.,  4255.,  4509.,  4763.,  5017.,  197.,
      459.,   721.,   983.,   1245.,  1507.,  1769.,  2031.,  2496.,  3028.,
      3560.,  4092.,  1283.,  1553.,  1823.,  2093.,  2572.,  3120.,  3668.,
      4216.,  1321.,  1599.,  1877.,  2155.,  2648.,  3212.,  3776.,  4340.,
      1359.,  1645.,  1931.,  2217.,  3341.,  3603.,  3865.,  4127.,  4389.,
      4651.,  4913.,  5175.,  8880.,  9412.,  9944.,  10476., 4523.,  4793.,
      5063.,  5333.,  9148.,  9696.,  10244., 10792., 4657.,  4935.,  5213.,
      5491.,  9416.,  9980.,  10544., 11108., 4791.,  5077.,  5363.,  5649.,
      6706.,  7262.,  7818.,  8374.,  8930.,  9486.,  10042., 10598., 18064.,
      19192., 20320., 21448., 9198.,  9770.,  10342., 10914., 18600., 19760.,
      20920., 22080., 9466.,  10054., 10642., 11230., 19136., 20328., 21520.,
      22712., 9734.,  10338., 10942., 11546., 3749.,  4043.,  4337.,  4631.,
      4925.,  5219.,  5513.,  5807.,  9952.,  10548., 11144., 11740., 5059.,
      5361.,  5663.,  5965.,  10220., 10832., 11444., 12056., 5193.,  5503.,
      5813.,  6123.,  10488., 11116., 11744., 12372., 5327.,  5645.,  5963.,
      6281.,  7522.,  8142.,  8762.,  9382.,  10002., 10622., 11242., 11862.,
      20208., 21464., 22720., 23976., 10270., 10906., 11542., 12178., 20744.,
      22032., 23320., 24608., 10538., 11190., 11842., 12494., 21280., 22600.,
      23920., 25240., 10806., 11474., 12142., 12810., 4157.,  4483.,  4809.,
      5135.,  5461.,  5787.,  6113.,  6439.,  11024., 11684., 12344., 13004.,
      5595.,  5929.,  6263.,  6597.,  11292., 11968., 12644., 13320., 5729.,
      6071.,  6413.,  6755.,  11560., 12252., 12944., 13636., 5863.,  6213.,
      6563.,  6913.,  8338.,  9022.,  9706.,  10390., 11074., 11758., 12442.,
      13126., 22352., 23736., 25120., 26504., 11342., 12042., 12742., 13442.,
      22888., 24304., 25720., 27136., 11610., 12326., 13042., 13758., 23424.,
      24872., 26320., 27768., 11878., 12610., 13342., 14074., 4565.,  4923.,
      5281.,  5639.,  5997.,  6355.,  6713.,  7071.,  12096., 12820., 13544.,
      14268., 6131.,  6497.,  6863.,  7229.,  12364., 13104., 13844., 14584.,
      6265.,  6639.,  7013.,  7387.,  12632., 13388., 14144., 14900., 6399.,
      6781.,  7163.,  7545.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     11.,    17.,    23.,    29.,    35.,   41.,   47.,    64.,
      84.,    104.,   124.,   67.,    81.,    95.,   109.,  140.,   176.,
      212.,   248.,   105.,   127.,   149.,   171.,  193.,  215.,   237.,
      259.,   0.,     0.,     0.,     0.,     77.,   83.,   89.,    95.,
      101.,   107.,   113.,   119.,   304.,   324.,  344.,  364.,   235.,
      249.,   263.,   277.,   572.,   608.,   644.,  680.,  369.,   391.,
      413.,   435.,   457.,   479.,   501.,   523.,  0.,    0.,     0.,
      0.,     172.,   208.,   244.,   280.,   316.,  352.,  388.,   424.,
      836.,   924.,   1012.,  1100.,  584.,   636.,  688.,  740.,   1372.,
      1492.,  1612.,  1732.,  852.,   920.,   988.,  1056., 1124.,  1192.,
      1260.,  1328.,  0.,     0.,     0.,     0.,    383.,  413.,   443.,
      473.,   503.,   533.,   563.,   593.,   1108., 1176., 1244.,  1312.,
      637.,   675.,   713.,   751.,   1376.,  1460., 1544., 1628.,  771.,
      817.,   863.,   909.,   955.,   1001.,  1047., 1093., 0.,     0.,
      0.,     0.,     784.,   868.,   952.,   1036., 1120., 1204.,  1288.,
      1372.,  2444.,  2628.,  2812.,  2996.,  1388., 1488., 1588.,  1688.,
      2980.,  3196.,  3412.,  3628.,  1656.,  1772., 1888., 2004.,  2120.,
      2236.,  2352.,  2468.,  0.,     0.,     0.,    0.,    689.,   743.,
      797.,   851.,   905.,   959.,   1013.,  1067., 1912., 2028.,  2144.,
      2260.,  1039.,  1101.,  1163.,  1225.,  2180., 2312., 2444.,  2576.,
      1173.,  1243.,  1313.,  1383.,  1453.,  1523., 1593., 1663.,  0.,
      0.,     0.,     0.,     1337.,  1391.,  1445., 1499., 1553.,  1607.,
      1661.,  1715.,  3304.,  3420.,  3536.,  3652., 1783., 1845.,  1907.,
      1969.,  3764.,  3896.,  4028.,  4160.,  2013., 2083., 2153.,  2223.,
      2293.,  2363.,  2433.,  2503.,  0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     59.,    137.,  215.,  293.,   371.,
      449.,   527.,   605.,   748.,   912.,   1076., 1240., 409.,   495.,
      581.,   667.,   824.,   1004.,  1184.,  1364., 447.,  541.,   635.,
      729.,   823.,   917.,   1011.,  1105.,  0.,    0.,    0.,     0.,
      995.,   1073.,  1151.,  1229.,  1307.,  1385., 1463., 1541.,  2716.,
      2880.,  3044.,  3208.,  1441.,  1527.,  1613., 1699., 2984.,  3164.,
      3344.,  3524.,  1575.,  1669.,  1763.,  1857., 1951., 2045.,  2139.,
      2233.,  0.,     0.,     0.,     0.,     2008., 2188., 2368.,  2548.,
      2728.,  2908.,  3088.,  3268.,  5660.,  6036., 6412., 6788.,  2996.,
      3192.,  3388.,  3584.,  6196.,  6604.,  7012., 7420., 3264.,  3476.,
      3688.,  3900.,  4112.,  4324.,  4536.,  4748., 0.,    0.,     0.,
      0.,     1301.,  1403.,  1505.,  1607.,  1709., 1811., 1913.,  2015.,
      3520.,  3732.,  3944.,  4156.,  1843.,  1953., 2063., 2173.,  3788.,
      4016.,  4244.,  4472.,  1977.,  2095.,  2213., 2331., 2449.,  2567.,
      2685.,  2803.,  0.,     0.,     0.,     0.,    2620., 2848.,  3076.,
      3304.,  3532.,  3760.,  3988.,  4216.,  7268., 7740., 8212.,  8684.,
      3800.,  4044.,  4288.,  4532.,  7804.,  8308., 8812., 9316.,  4068.,
      4328.,  4588.,  4848.,  5108.,  5368.,  5628., 5888., 0.,     0.,
      0.,     0.,     1607.,  1733.,  1859.,  1985., 2111., 2237.,  2363.,
      2489.,  4324.,  4584.,  4844.,  5104.,  2245., 2379., 2513.,  2647.,
      4592.,  4868.,  5144.,  5420.,  2379.,  2521., 2663., 2805.,  2947.,
      3089.,  3231.,  3373.,  0.,     0.,     0.,    0.,    3119.,  3245.,
      3371.,  3497.,  3623.,  3749.,  3875.,  4001., 7444., 7704.,  7964.,
      8224.,  3853.,  3987.,  4121.,  4255.,  7904., 8180., 8456.,  8732.,
      4083.,  4225.,  4367.,  4509.,  4651.,  4793., 4935., 5077.,  0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     113.,
      263.,   413.,   563.,   713.,   863.,   1013., 1163., 1432.,  1740.,
      2048.,  2356.,  751.,   909.,   1067.,  1225., 1508., 1832.,  2156.,
      2480.,  789.,   955.,   1121.,  1287.,  1453., 1619., 1785.,  1951.,
      0.,     0.,     0.,     0.,     1913.,  2063., 2213., 2363.,  2513.,
      2663.,  2813.,  2963.,  5128.,  5436.,  5744., 6052., 2647.,  2805.,
      2963.,  3121.,  5396.,  5720.,  6044.,  6368., 2781., 2947.,  3113.,
      3279.,  3445.,  3611.,  3777.,  3943.,  0.,    0.,    0.,     0.,
      3844.,  4168.,  4492.,  4816.,  5140.,  5464., 5788., 6112.,  10484.,
      11148., 11812., 12476., 5408.,  5748.,  6088., 6428., 11020., 11716.,
      12412., 13108., 5676.,  6032.,  6388.,  6744., 7100., 7456.,  7812.,
      8168.,  0.,     0.,     0.,     0.,     2219., 2393., 2567.,  2741.,
      2915.,  3089.,  3263.,  3437.,  5932.,  6288., 6644., 7000.,  3049.,
      3231.,  3413.,  3595.,  6200.,  6572.,  6944., 7316., 3183.,  3373.,
      3563.,  3753.,  3943.,  4133.,  4323.,  4513., 0.,    0.,     0.,
      0.,     4456.,  4828.,  5200.,  5572.,  5944., 6316., 6688.,  7060.,
      12092., 12852., 13612., 14372., 6212.,  6600., 6988., 7376.,  12628.,
      13420., 14212., 15004., 6480.,  6884.,  7288., 7692., 8096.,  8500.,
      8904.,  9308.,  0.,     0.,     0.,     0.,    2525., 2723.,  2921.,
      3119.,  3317.,  3515.,  3713.,  3911.,  6736., 7140., 7544.,  7948.,
      3451.,  3657.,  3863.,  4069.,  7004.,  7424., 7844., 8264.,  3585.,
      3799.,  4013.,  4227.,  4441.,  4655.,  4869., 5083., 0.,     0.,
      0.,     0.,     4901.,  5099.,  5297.,  5495., 5693., 5891.,  6089.,
      6287.,  11584., 11988., 12392., 12796., 5923., 6129., 6335.,  6541.,
      12044., 12464., 12884., 13304., 6153.,  6367., 6581., 6795.,  7009.,
      7223.,  7437.,  7651.,  0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     70.,     110.,    150.,    190.,   230.,   270.,    310.,
      420.,    564.,    708.,    852.,    486.,   590.,   694.,    798.,
      1012.,   1284.,   1556.,   1828.,   782.,   950.,   1118.,   1286.,
      1604.,   2004.,   2404.,   2804.,   1078.,  1310.,  1542.,   1774.,
      510.,    550.,    590.,    630.,    670.,   710.,   750.,    790.,
      2148.,   2292.,   2436.,   2580.,   1734.,  1838.,  1942.,   2046.,
      4276.,   4548.,   4820.,   5092.,   2798.,  2966.,  3134.,   3302.,
      6404.,   6804.,   7204.,   7604.,   3862.,  4094.,  4326.,   4558.,
      1180.,   1516.,   1852.,   2188.,   2524.,  2860.,  3196.,   3532.,
      6664.,   7464.,   8264.,   9064.,   4652.,  5116.,  5580.,   6044.,
      10920.,  11976.,  13032.,  14088.,  6780.,  7372.,  7964.,   8556.,
      15176.,  16488.,  17800.,  19112.,  8908.,  9628.,  10348.,  11068.,
      3742.,   4038.,   4334.,   4630.,   4926.,  5222.,  5518.,   5814.,
      10660.,  11316.,  11972.,  12628.,  5990.,  6350.,  6710.,   7070.,
      12788.,  13572.,  14356.,  15140.,  7054.,  7478.,  7902.,   8326.,
      14916.,  15828.,  16740.,  17652.,  8118.,  8606.,  9094.,   9582.,
      7644.,   8492.,   9340.,   10188.,  11036., 11884., 12732.,  13580.,
      23688.,  25512.,  27336.,  29160.,  13164., 14140., 15116.,  16092.,
      27944.,  30024.,  32104.,  34184.,  15292., 16396., 17500.,  18604.,
      32200.,  34536.,  36872.,  39208.,  17420., 18652., 19884.,  21116.,
      6974.,   7526.,   8078.,   8630.,   9182.,  9734.,  10286.,  10838.,
      19172.,  20340.,  21508.,  22676.,  10246., 10862., 11478.,  12094.,
      21300.,  22596.,  23892.,  25188.,  11310., 11990., 12670.,  13350.,
      23428.,  24852.,  26276.,  27700.,  12374., 13118., 13862.,  14606.,
      14108.,  15468.,  16828.,  18188.,  19548., 20908., 22268.,  23628.,
      40712.,  43560.,  46408.,  49256.,  21676., 23164., 24652.,  26140.,
      44968.,  48072.,  51176.,  54280.,  23804., 25420., 27036.,  28652.,
      49224.,  52584.,  55944.,  59304.,  25932., 27676., 29420.,  31164.,
      10206.,  11014.,  11822.,  12630.,  13438., 14246., 15054.,  15862.,
      27684.,  29364.,  31044.,  32724.,  14502., 15374., 16246.,  17118.,
      29812.,  31620.,  33428.,  35236.,  15566., 16502., 17438.,  18374.,
      31940.,  33876.,  35812.,  37748.,  16630., 17630., 18630.,  19630.,
      670.,    1734.,   2798.,   3862.,   4926.,  5990.,  7054.,   8118.,
      9892.,   12084.,  14276.,  16468.,  5222.,  6350.,  7478.,   8606.,
      10484.,  12804.,  15124.,  17444.,  5518.,  6710.,  7902.,   9094.,
      11076.,  13524.,  15972.,  18420.,  5814.,  7070.,  8326.,   9582.,
      13438.,  14502.,  15566.,  16630.,  17694., 18758., 19822.,  20886.,
      36196.,  38388.,  40580.,  42772.,  18758., 19886., 21014.,  22142.,
      38324.,  40644.,  42964.,  45284.,  19822., 21014., 22206.,  23398.,
      40452.,  42900.,  45348.,  47796.,  20886., 22142., 23398.,  24654.,
      27036.,  29420.,  31804.,  34188.,  36572., 38956., 41340.,  43724.,
      74760.,  79656.,  84552.,  89448.,  38700., 41212., 43724.,  46236.,
      79016.,  84168.,  89320.,  94472.,  40828., 43468., 46108.,  48748.,
      83272.,  88680.,  94088.,  99496.,  42956., 45724., 48492.,  51260.,
      16670.,  17990.,  19310.,  20630.,  21950., 23270., 24590.,  25910.,
      44708.,  47412.,  50116.,  52820.,  23014., 24398., 25782.,  27166.,
      46836.,  49668.,  52500.,  55332.,  24078., 25526., 26974.,  28422.,
      48964.,  51924.,  54884.,  57844.,  25142., 26654., 28166.,  29678.,
      33500.,  36396.,  39292.,  42188.,  45084., 47980., 50876.,  53772.,
      91784.,  97704.,  103624., 109544., 47212., 50236., 53260.,  56284.,
      96040.,  102216., 108392., 114568., 49340., 52492., 55644.,  58796.,
      100296., 106728., 113160., 119592., 51468., 54748., 58028.,  61308.,
      19902.,  21478.,  23054.,  24630.,  26206., 27782., 29358.,  30934.,
      53220.,  56436.,  59652.,  62868.,  27270., 28910., 30550.,  32190.,
      55348.,  58692.,  62036.,  65380.,  28334., 30038., 31742.,  33446.,
      57476.,  60948.,  64420.,  67892.,  29398., 31166., 32934.,  34702.,
      39964.,  43372.,  46780.,  50188.,  53596., 57004., 60412.,  63820.,
      108808., 115752., 122696., 129640., 55724., 59260., 62796.,  66332.,
      113064., 120264., 127464., 134664., 57852., 61516., 65180.,  68844.,
      117320., 124776., 132232., 139688., 59980., 63772., 67564.,  71356.,
      23134.,  24966.,  26798.,  28630.,  30462., 32294., 34126.,  35958.,
      61732.,  65460.,  69188.,  72916.,  31526., 33422., 35318.,  37214.,
      63860.,  67716.,  71572.,  75428.,  32590., 34550., 36510.,  38470.,
      65988.,  69972.,  73956.,  77940.,  33654., 35678., 37702.,  39726.,
      1310.,   3398.,   5486.,   7574.,   9662.,  11750., 13838.,  15926.,
      19364.,  23604.,  27844.,  32084.,  9958.,  12110., 14262.,  16414.,
      19956.,  24324.,  28692.,  33060.,  10254., 12470., 14686.,  16902.,
      20548.,  25044.,  29540.,  34036.,  10550., 12830., 15110.,  17390.,
      26366.,  28454.,  30542.,  32630.,  34718., 36806., 38894.,  40982.,
      70244.,  74484.,  78724.,  82964.,  35782., 37934., 40086.,  42238.,
      72372.,  76740.,  81108.,  85476.,  36846., 39062., 41278.,  43494.,
      74500.,  78996.,  83492.,  87988.,  37910., 40190., 42470.,  44750.,
      52892.,  57324.,  61756.,  66188.,  70620., 75052., 79484.,  83916.,
      142856., 151848., 160840., 169832., 72748., 77308., 81868.,  86428.,
      147112., 156360., 165608., 174856., 74876., 79564., 84252.,  88940.,
      151368., 160872., 170376., 179880., 77004., 81820., 86636.,  91452.,
      29598.,  31942.,  34286.,  36630.,  38974., 41318., 43662.,  46006.,
      78756.,  83508.,  88260.,  93012.,  40038., 42446., 44854.,  47262.,
      80884.,  85764.,  90644.,  95524.,  41102., 43574., 46046.,  48518.,
      83012.,  88020.,  93028.,  98036.,  42166., 44702., 47238.,  49774.,
      59356.,  64300.,  69244.,  74188.,  79132., 84076., 89020.,  93964.,
      159880., 169896., 179912., 189928., 81260., 86332., 91404.,  96476.,
      164136., 174408., 184680., 194952., 83388., 88588., 93788.,  98988.,
      168392., 178920., 189448., 199976., 85516., 90844., 96172.,  101500.,
      32830.,  35430.,  38030.,  40630.,  43230., 45830., 48430.,  51030.,
      87268.,  92532.,  97796.,  103060., 44294., 46958., 49622.,  52286.,
      89396.,  94788.,  100180., 105572., 45358., 48086., 50814.,  53542.,
      91524.,  97044.,  102564., 108084., 46422., 49214., 52006.,  54798.,
      65820.,  71276.,  76732.,  82188.,  87644., 93100., 98556.,  104012.,
      176904., 187944., 198984., 210024., 89772., 95356., 100940., 106524.,
      181160., 192456., 203752., 215048., 91900., 97612., 103324., 109036.,
      185416., 196968., 208520., 220072., 94028., 99868., 105708., 111548.,
      36062.,  38918.,  41774.,  44630.,  47486., 50342., 53198.,  56054.,
      95780.,  101556., 107332., 113108., 48550., 51470., 54390.,  57310.,
      97908.,  103812., 109716., 115620., 49614., 52598., 55582.,  58566.,
      100036., 106068., 112100., 118132., 50678., 53726., 56774.,  59822.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,     110.,    150.,    190.,   230.,   270.,   310.,
      420.,   564.,    708.,    852.,    486.,   590.,   694.,   798.,
      1012.,  1284.,   1556.,   1828.,   782.,   950.,   1118.,  1286.,
      1454.,  1622.,   1790.,   1958.,   0.,     0.,     0.,     0.,
      510.,   550.,    590.,    630.,    670.,   710.,   750.,   790.,
      2148.,  2292.,   2436.,   2580.,   1734.,  1838.,  1942.,  2046.,
      4276.,  4548.,   4820.,   5092.,   2798.,  2966.,  3134.,  3302.,
      3470.,  3638.,   3806.,   3974.,   0.,     0.,     0.,     0.,
      1140.,  1412.,   1684.,   1956.,   2228.,  2500.,  2772.,  3044.,
      6072.,  6744.,   7416.,   8088.,   4356.,  4756.,  5156.,  5556.,
      10328., 11256.,  12184.,  13112.,  6484.,  7012.,  7540.,  8068.,
      8596.,  9124.,   9652.,   10180.,  0.,     0.,     0.,     0.,
      2934.,  3166.,   3398.,   3630.,   3862.,  4094.,  4326.,  4558.,
      8532.,  9060.,   9588.,   10116.,  4926.,  5222.,  5518.,  5814.,
      10660., 11316.,  11972.,  12628.,  5990.,  6350.,  6710.,  7070.,
      7430.,  7790.,   8150.,   8510.,   0.,     0.,     0.,     0.,
      5988.,  6644.,   7300.,   7956.,   8612.,  9268.,  9924.,  10580.,
      18840., 20280.,  21720.,  23160.,  10740., 11524., 12308., 13092.,
      23096., 24792.,  26488.,  28184.,  12868., 13780., 14692., 15604.,
      16516., 17428.,  18340.,  19252.,  0.,     0.,     0.,     0.,
      5358.,  5782.,   6206.,   6630.,   7054.,  7478.,  7902.,  8326.,
      14916., 15828.,  16740.,  17652.,  8118.,  8606.,  9094.,  9582.,
      17044., 18084.,  19124.,  20164.,  9182.,  9734.,  10286., 10838.,
      11390., 11942.,  12494.,  13046.,  0.,     0.,     0.,     0.,
      10446., 10870.,  11294.,  11718.,  12142., 12566., 12990., 13414.,
      25860., 26772.,  27684.,  28596.,  13974., 14462., 14950., 15438.,
      29524., 30564.,  31604.,  32644.,  15806., 16358., 16910., 17462.,
      18014., 18566.,  19118.,  19670.,  0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      390.,   1006.,   1622.,   2238.,   2854.,  3470.,  4086.,  4702.,
      5748.,  7044.,   8340.,   9636.,   3150.,  3830.,  4510.,  5190.,
      6340.,  7764.,   9188.,   10612.,  3446.,  4190.,  4934.,  5678.,
      6422.,  7166.,   7910.,   8654.,   0.,     0.,     0.,     0.,
      7782.,  8398.,   9014.,   9630.,   10246., 10862., 11478., 12094.,
      21300., 22596.,  23892.,  25188.,  11310., 11990., 12670., 13350.,
      23428., 24852.,  26276.,  27700.,  12374., 13118., 13862., 14606.,
      15350., 16094.,  16838.,  17582.,  0.,     0.,     0.,     0.,
      15684., 17108.,  18532.,  19956.,  21380., 22804., 24228., 25652.,
      44376., 47352.,  50328.,  53304.,  23508., 25060., 26612., 28164.,
      48632., 51864.,  55096.,  58328.,  25636., 27316., 28996., 30676.,
      32356., 34036.,  35716.,  37396.,  0.,     0.,     0.,     0.,
      10206., 11014.,  11822.,  12630.,  13438., 14246., 15054., 15862.,
      27684., 29364.,  31044.,  32724.,  14502., 15374., 16246., 17118.,
      29812., 31620.,  33428.,  35236.,  15566., 16502., 17438., 18374.,
      19310., 20246.,  21182.,  22118.,  0.,     0.,     0.,     0.,
      20532., 22340.,  24148.,  25956.,  27764., 29572., 31380., 33188.,
      57144., 60888.,  64632.,  68376.,  29892., 31828., 33764., 35700.,
      61400., 65400.,  69400.,  73400.,  32020., 34084., 36148., 38212.,
      40276., 42340.,  44404.,  46468.,  0.,     0.,     0.,     0.,
      12630., 13630.,  14630.,  15630.,  16630., 17630., 18630., 19630.,
      34068., 36132.,  38196.,  40260.,  17694., 18758., 19822., 20886.,
      36196., 38388.,  40580.,  42772.,  18758., 19886., 21014., 22142.,
      23270., 24398.,  25526.,  26654.,  0.,     0.,     0.,     0.,
      24630., 25630.,  26630.,  27630.,  28630., 29630., 30630., 31630.,
      58836., 60900.,  62964.,  65028.,  30462., 31526., 32590., 33654.,
      62500., 64692.,  66884.,  69076.,  32294., 33422., 34550., 35678.,
      36806., 37934.,  39062.,  40190.,  0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      750.,   1942.,   3134.,   4326.,   5518.,  6710.,  7902.,  9094.,
      11076., 13524.,  15972.,  18420.,  5814.,  7070.,  8326.,  9582.,
      11668., 14244.,  16820.,  19396.,  6110.,  7430.,  8750.,  10070.,
      11390., 12710.,  14030.,  15350.,  0.,     0.,     0.,     0.,
      15054., 16246.,  17438.,  18630.,  19822., 21014., 22206., 23398.,
      40452., 42900.,  45348.,  47796.,  20886., 22142., 23398., 24654.,
      42580., 45156.,  47732.,  50308.,  21950., 23270., 24590., 25910.,
      27230., 28550.,  29870.,  31190.,  0.,     0.,     0.,     0.,
      30228., 32804.,  35380.,  37956.,  40532., 43108., 45684., 48260.,
      82680., 87960.,  93240.,  98520.,  42660., 45364., 48068., 50772.,
      86936., 92472.,  98008.,  103544., 44788., 47620., 50452., 53284.,
      56116., 58948.,  61780.,  64612.,  0.,     0.,     0.,     0.,
      17478., 18862.,  20246.,  21630.,  23014., 24398., 25782., 27166.,
      46836., 49668.,  52500.,  55332.,  24078., 25526., 26974., 28422.,
      48964., 51924.,  54884.,  57844.,  25142., 26654., 28166., 29678.,
      31190., 32702.,  34214.,  35726.,  0.,     0.,     0.,     0.,
      35076., 38036.,  40996.,  43956.,  46916., 49876., 52836., 55796.,
      95448., 101496., 107544., 113592., 49044., 52132., 55220., 58308.,
      99704., 106008., 112312., 118616., 51172., 54388., 57604., 60820.,
      64036., 67252.,  70468.,  73684.,  0.,     0.,     0.,     0.,
      19902., 21478.,  23054.,  24630.,  26206., 27782., 29358., 30934.,
      53220., 56436.,  59652.,  62868.,  27270., 28910., 30550., 32190.,
      55348., 58692.,  62036.,  65380.,  28334., 30038., 31742., 33446.,
      35150., 36854.,  38558.,  40262.,  0.,     0.,     0.,     0.,
      38814., 40390.,  41966.,  43542.,  45118., 46694., 48270., 49846.,
      91812., 95028.,  98244.,  101460., 46950., 48590., 50230., 51870.,
      95476., 98820.,  102164., 105508., 48782., 50486., 52190., 53894.,
      55598., 57302.,  59006.,  60710.,  0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,     0.,      0.,      0.,      0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}